{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## License \n",
    "\n",
    "Copyright 2017 - 2020 Patrick Hall and the H2O.ai team\n",
    "\n",
    "Licensed under the Apache License, Version 2.0 (the \"License\");\n",
    "you may not use this file except in compliance with the License.\n",
    "You may obtain a copy of the License at\n",
    "\n",
    "    http://www.apache.org/licenses/LICENSE-2.0\n",
    "\n",
    "Unless required by applicable law or agreed to in writing, software\n",
    "distributed under the License is distributed on an \"AS IS\" BASIS,\n",
    "WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
    "See the License for the specific language governing permissions and\n",
    "limitations under the License."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**DISCLAIMER:** This notebook is not legal compliance advice."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Engineering Transparency into Your Machine Learning Model with Python and XGBoost\n",
    "#### Monotonic XGBoost models, partial dependence, ICE, and Shapley explanations"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "A key to building interpretable models is to limit their complexity. The more complex a model is, the harder it is to explain and understand. Overly complex models can also make unstable predictions on new data, which is both difficult to explain and makes models harder to trust. Monotonicity constraints not only simplify models, but do so in a way that is somewhat natural for human reasoning, increasing the transparency of predictive models. Under monotonicity constraints, model predictions can only increase or only decrease as an input variable value increases, and the direction of the constraint is typically specified by the user for logical reasons. For instance, a model might be constrained to produce only increasing probabilities of a certain medical condition as a patient's age increases, or to make only increasing predictions for home prices as a home's square footage increases. \n",
    "\n",
    "In this notebook a gradient boosting machine (GBM) is trained with monotonicity constraints to predict credit card payment defaults, using the UCI credit card default data, Python, NumPy, Pandas, and XGBoost. First, the credit card default data is loaded and prepared. Then Pearson correlation with the prediction target is used to determine the direction of the monotonicity constraints for each input variable and the model is trained. After the model is trained, partial dependence and individual conditional expectation (ICE) plots are used to analyze and verify the model's monotonic behavior. Finally an example of creating regulator mandated reason codes from high fidelity Shapley explanations for any model prediction is presented. This combination of monotonic XGBoost, partial dependence, ICE, and Shapley explanations is probably the most direct way to create an interpretable machine learning model today.\n",
    "\n",
    "**Note**: As of the h2o 3.24 \"Yates\" release, Shapley values are supported in h2o, in addition to GBM monotonicity constraints and partial dependence. To see Shapley values and monotonicity constraints for an h2o GBM in action please see: https://github.com/jphall663/interpretable_machine_learning_with_python/blob/master/dia.ipynb."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Python imports "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's start with Python package imports. NumPy is used for basic arrray, vector, and matrix calculations. Pandas is used for data frame manipulation and plotting, and XGBoost is used to train a GBM with monotonicity constraints."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/patrickh/anaconda3/lib/python3.6/site-packages/sklearn/ensemble/weight_boosting.py:29: DeprecationWarning: numpy.core.umath_tests is an internal NumPy module and should not be imported. It will be removed in a future NumPy release.\n",
      "  from numpy.core.umath_tests import inner1d\n"
     ]
    }
   ],
   "source": [
    "import numpy as np                   # array, vector, matrix calculations\n",
    "import pandas as pd                  # DataFrame handling\n",
    "import shap                          # for consistent, signed variable importance measurements\n",
    "import xgboost as xgb                # gradient boosting machines (GBMs)\n",
    "\n",
    "import matplotlib.pyplot as plt      # plotting\n",
    "pd.options.display.max_columns = 999 # enable display of all columns in notebook\n",
    "\n",
    "# enables display of plots in notebook\n",
    "%matplotlib inline\n",
    "\n",
    "np.random.seed(12345)                # set random seed for reproducibility"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1. Download, explore, and prepare UCI credit card default data\n",
    "\n",
    "UCI credit card default data: https://archive.ics.uci.edu/ml/datasets/default+of+credit+card+clients\n",
    "\n",
    "The UCI credit card default data contains demographic and payment information about credit card customers in Taiwan in the year 2005. The data set contains 23 input variables: \n",
    "\n",
    "* **`LIMIT_BAL`**: Amount of given credit (NT dollar)\n",
    "* **`SEX`**: 1 = male; 2 = female\n",
    "* **`EDUCATION`**: 1 = graduate school; 2 = university; 3 = high school; 4 = others \n",
    "* **`MARRIAGE`**: 1 = married; 2 = single; 3 = others\n",
    "* **`AGE`**: Age in years \n",
    "* **`PAY_0`, `PAY_2` - `PAY_6`**: History of past payment; `PAY_0` = the repayment status in September, 2005; `PAY_2` = the repayment status in August, 2005; ...; `PAY_6` = the repayment status in April, 2005. The measurement scale for the repayment status is: -1 = pay duly; 1 = payment delay for one month; 2 = payment delay for two months; ...; 8 = payment delay for eight months; 9 = payment delay for nine months and above. \n",
    "* **`BILL_AMT1` - `BILL_AMT6`**: Amount of bill statement (NT dollar). `BILL_AMNT1` = amount of bill statement in September, 2005; `BILL_AMT2` = amount of bill statement in August, 2005; ...; `BILL_AMT6` = amount of bill statement in April, 2005. \n",
    "* **`PAY_AMT1` - `PAY_AMT6`**: Amount of previous payment (NT dollar). `PAY_AMT1` = amount paid in September, 2005; `PAY_AMT2` = amount paid in August, 2005; ...; `PAY_AMT6` = amount paid in April, 2005. \n",
    "\n",
    "These 23 input variables are used to predict the target variable, whether or not a customer defaulted on their credit card bill in late 2005. Because XGBoost accepts only numeric inputs, all variables will be treated as numeric."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Import data and clean\n",
    "The credit card default data is available as an `.xls` file. Pandas reads `.xls` files automatically, so it's used to load the credit card default data and give the prediction target a shorter name: `DEFAULT_NEXT_MONTH`. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# import XLS file\n",
    "path = 'default_of_credit_card_clients.xls'\n",
    "data = pd.read_excel(path,\n",
    "                     skiprows=1) # skip the first row of the spreadsheet\n",
    "\n",
    "# remove spaces from target column name \n",
    "data = data.rename(columns={'default payment next month': 'DEFAULT_NEXT_MONTH'}) "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Assign modeling roles"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The shorthand name `y` is assigned to the prediction target. `X` is assigned to all other input variables in the credit card default data except the row indentifier, `ID`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "y = DEFAULT_NEXT_MONTH\n",
      "X = ['LIMIT_BAL', 'SEX', 'EDUCATION', 'MARRIAGE', 'AGE', 'PAY_0', 'PAY_2', 'PAY_3', 'PAY_4', 'PAY_5', 'PAY_6', 'BILL_AMT1', 'BILL_AMT2', 'BILL_AMT3', 'BILL_AMT4', 'BILL_AMT5', 'BILL_AMT6', 'PAY_AMT1', 'PAY_AMT2', 'PAY_AMT3', 'PAY_AMT4', 'PAY_AMT5', 'PAY_AMT6']\n"
     ]
    }
   ],
   "source": [
    "# assign target and inputs for GBM\n",
    "y = 'DEFAULT_NEXT_MONTH'\n",
    "X = [name for name in data.columns if name not in [y, 'ID']]\n",
    "print('y =', y)\n",
    "print('X =', X)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Display descriptive statistics\n",
    "The Pandas `describe()` function displays a brief description of the credit card default data. The input variables `SEX`, `EDUCATION`, `MARRIAGE`, `PAY_0`-`PAY_6`, and the prediction target `DEFAULT_NEXT_MONTH`, are really categorical variables, but they have already been encoded into meaningful numeric, integer values, which is great for XGBoost. Also, there are no missing values in this dataset."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>LIMIT_BAL</th>\n",
       "      <th>SEX</th>\n",
       "      <th>EDUCATION</th>\n",
       "      <th>MARRIAGE</th>\n",
       "      <th>AGE</th>\n",
       "      <th>PAY_0</th>\n",
       "      <th>PAY_2</th>\n",
       "      <th>PAY_3</th>\n",
       "      <th>PAY_4</th>\n",
       "      <th>PAY_5</th>\n",
       "      <th>PAY_6</th>\n",
       "      <th>BILL_AMT1</th>\n",
       "      <th>BILL_AMT2</th>\n",
       "      <th>BILL_AMT3</th>\n",
       "      <th>BILL_AMT4</th>\n",
       "      <th>BILL_AMT5</th>\n",
       "      <th>BILL_AMT6</th>\n",
       "      <th>PAY_AMT1</th>\n",
       "      <th>PAY_AMT2</th>\n",
       "      <th>PAY_AMT3</th>\n",
       "      <th>PAY_AMT4</th>\n",
       "      <th>PAY_AMT5</th>\n",
       "      <th>PAY_AMT6</th>\n",
       "      <th>DEFAULT_NEXT_MONTH</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>30000.000000</td>\n",
       "      <td>30000.000000</td>\n",
       "      <td>30000.000000</td>\n",
       "      <td>30000.000000</td>\n",
       "      <td>30000.000000</td>\n",
       "      <td>30000.000000</td>\n",
       "      <td>30000.000000</td>\n",
       "      <td>30000.000000</td>\n",
       "      <td>30000.000000</td>\n",
       "      <td>30000.000000</td>\n",
       "      <td>30000.000000</td>\n",
       "      <td>30000.000000</td>\n",
       "      <td>30000.000000</td>\n",
       "      <td>3.000000e+04</td>\n",
       "      <td>30000.000000</td>\n",
       "      <td>30000.000000</td>\n",
       "      <td>30000.000000</td>\n",
       "      <td>30000.000000</td>\n",
       "      <td>3.000000e+04</td>\n",
       "      <td>30000.00000</td>\n",
       "      <td>30000.000000</td>\n",
       "      <td>30000.000000</td>\n",
       "      <td>30000.000000</td>\n",
       "      <td>30000.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>167484.322667</td>\n",
       "      <td>1.603733</td>\n",
       "      <td>1.853133</td>\n",
       "      <td>1.551867</td>\n",
       "      <td>35.485500</td>\n",
       "      <td>-0.016700</td>\n",
       "      <td>-0.133767</td>\n",
       "      <td>-0.166200</td>\n",
       "      <td>-0.220667</td>\n",
       "      <td>-0.266200</td>\n",
       "      <td>-0.291100</td>\n",
       "      <td>51223.330900</td>\n",
       "      <td>49179.075167</td>\n",
       "      <td>4.701315e+04</td>\n",
       "      <td>43262.948967</td>\n",
       "      <td>40311.400967</td>\n",
       "      <td>38871.760400</td>\n",
       "      <td>5663.580500</td>\n",
       "      <td>5.921163e+03</td>\n",
       "      <td>5225.68150</td>\n",
       "      <td>4826.076867</td>\n",
       "      <td>4799.387633</td>\n",
       "      <td>5215.502567</td>\n",
       "      <td>0.221200</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>129747.661567</td>\n",
       "      <td>0.489129</td>\n",
       "      <td>0.790349</td>\n",
       "      <td>0.521970</td>\n",
       "      <td>9.217904</td>\n",
       "      <td>1.123802</td>\n",
       "      <td>1.197186</td>\n",
       "      <td>1.196868</td>\n",
       "      <td>1.169139</td>\n",
       "      <td>1.133187</td>\n",
       "      <td>1.149988</td>\n",
       "      <td>73635.860576</td>\n",
       "      <td>71173.768783</td>\n",
       "      <td>6.934939e+04</td>\n",
       "      <td>64332.856134</td>\n",
       "      <td>60797.155770</td>\n",
       "      <td>59554.107537</td>\n",
       "      <td>16563.280354</td>\n",
       "      <td>2.304087e+04</td>\n",
       "      <td>17606.96147</td>\n",
       "      <td>15666.159744</td>\n",
       "      <td>15278.305679</td>\n",
       "      <td>17777.465775</td>\n",
       "      <td>0.415062</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>10000.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>21.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>-165580.000000</td>\n",
       "      <td>-69777.000000</td>\n",
       "      <td>-1.572640e+05</td>\n",
       "      <td>-170000.000000</td>\n",
       "      <td>-81334.000000</td>\n",
       "      <td>-339603.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>50000.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>28.000000</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>3558.750000</td>\n",
       "      <td>2984.750000</td>\n",
       "      <td>2.666250e+03</td>\n",
       "      <td>2326.750000</td>\n",
       "      <td>1763.000000</td>\n",
       "      <td>1256.000000</td>\n",
       "      <td>1000.000000</td>\n",
       "      <td>8.330000e+02</td>\n",
       "      <td>390.00000</td>\n",
       "      <td>296.000000</td>\n",
       "      <td>252.500000</td>\n",
       "      <td>117.750000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>140000.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>34.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>22381.500000</td>\n",
       "      <td>21200.000000</td>\n",
       "      <td>2.008850e+04</td>\n",
       "      <td>19052.000000</td>\n",
       "      <td>18104.500000</td>\n",
       "      <td>17071.000000</td>\n",
       "      <td>2100.000000</td>\n",
       "      <td>2.009000e+03</td>\n",
       "      <td>1800.00000</td>\n",
       "      <td>1500.000000</td>\n",
       "      <td>1500.000000</td>\n",
       "      <td>1500.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>240000.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>41.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>67091.000000</td>\n",
       "      <td>64006.250000</td>\n",
       "      <td>6.016475e+04</td>\n",
       "      <td>54506.000000</td>\n",
       "      <td>50190.500000</td>\n",
       "      <td>49198.250000</td>\n",
       "      <td>5006.000000</td>\n",
       "      <td>5.000000e+03</td>\n",
       "      <td>4505.00000</td>\n",
       "      <td>4013.250000</td>\n",
       "      <td>4031.500000</td>\n",
       "      <td>4000.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>1000000.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>79.000000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>964511.000000</td>\n",
       "      <td>983931.000000</td>\n",
       "      <td>1.664089e+06</td>\n",
       "      <td>891586.000000</td>\n",
       "      <td>927171.000000</td>\n",
       "      <td>961664.000000</td>\n",
       "      <td>873552.000000</td>\n",
       "      <td>1.684259e+06</td>\n",
       "      <td>896040.00000</td>\n",
       "      <td>621000.000000</td>\n",
       "      <td>426529.000000</td>\n",
       "      <td>528666.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            LIMIT_BAL           SEX     EDUCATION      MARRIAGE           AGE  \\\n",
       "count    30000.000000  30000.000000  30000.000000  30000.000000  30000.000000   \n",
       "mean    167484.322667      1.603733      1.853133      1.551867     35.485500   \n",
       "std     129747.661567      0.489129      0.790349      0.521970      9.217904   \n",
       "min      10000.000000      1.000000      0.000000      0.000000     21.000000   \n",
       "25%      50000.000000      1.000000      1.000000      1.000000     28.000000   \n",
       "50%     140000.000000      2.000000      2.000000      2.000000     34.000000   \n",
       "75%     240000.000000      2.000000      2.000000      2.000000     41.000000   \n",
       "max    1000000.000000      2.000000      6.000000      3.000000     79.000000   \n",
       "\n",
       "              PAY_0         PAY_2         PAY_3         PAY_4         PAY_5  \\\n",
       "count  30000.000000  30000.000000  30000.000000  30000.000000  30000.000000   \n",
       "mean      -0.016700     -0.133767     -0.166200     -0.220667     -0.266200   \n",
       "std        1.123802      1.197186      1.196868      1.169139      1.133187   \n",
       "min       -2.000000     -2.000000     -2.000000     -2.000000     -2.000000   \n",
       "25%       -1.000000     -1.000000     -1.000000     -1.000000     -1.000000   \n",
       "50%        0.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "75%        0.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "max        8.000000      8.000000      8.000000      8.000000      8.000000   \n",
       "\n",
       "              PAY_6      BILL_AMT1      BILL_AMT2     BILL_AMT3  \\\n",
       "count  30000.000000   30000.000000   30000.000000  3.000000e+04   \n",
       "mean      -0.291100   51223.330900   49179.075167  4.701315e+04   \n",
       "std        1.149988   73635.860576   71173.768783  6.934939e+04   \n",
       "min       -2.000000 -165580.000000  -69777.000000 -1.572640e+05   \n",
       "25%       -1.000000    3558.750000    2984.750000  2.666250e+03   \n",
       "50%        0.000000   22381.500000   21200.000000  2.008850e+04   \n",
       "75%        0.000000   67091.000000   64006.250000  6.016475e+04   \n",
       "max        8.000000  964511.000000  983931.000000  1.664089e+06   \n",
       "\n",
       "           BILL_AMT4      BILL_AMT5      BILL_AMT6       PAY_AMT1  \\\n",
       "count   30000.000000   30000.000000   30000.000000   30000.000000   \n",
       "mean    43262.948967   40311.400967   38871.760400    5663.580500   \n",
       "std     64332.856134   60797.155770   59554.107537   16563.280354   \n",
       "min   -170000.000000  -81334.000000 -339603.000000       0.000000   \n",
       "25%      2326.750000    1763.000000    1256.000000    1000.000000   \n",
       "50%     19052.000000   18104.500000   17071.000000    2100.000000   \n",
       "75%     54506.000000   50190.500000   49198.250000    5006.000000   \n",
       "max    891586.000000  927171.000000  961664.000000  873552.000000   \n",
       "\n",
       "           PAY_AMT2      PAY_AMT3       PAY_AMT4       PAY_AMT5  \\\n",
       "count  3.000000e+04   30000.00000   30000.000000   30000.000000   \n",
       "mean   5.921163e+03    5225.68150    4826.076867    4799.387633   \n",
       "std    2.304087e+04   17606.96147   15666.159744   15278.305679   \n",
       "min    0.000000e+00       0.00000       0.000000       0.000000   \n",
       "25%    8.330000e+02     390.00000     296.000000     252.500000   \n",
       "50%    2.009000e+03    1800.00000    1500.000000    1500.000000   \n",
       "75%    5.000000e+03    4505.00000    4013.250000    4031.500000   \n",
       "max    1.684259e+06  896040.00000  621000.000000  426529.000000   \n",
       "\n",
       "            PAY_AMT6  DEFAULT_NEXT_MONTH  \n",
       "count   30000.000000        30000.000000  \n",
       "mean     5215.502567            0.221200  \n",
       "std     17777.465775            0.415062  \n",
       "min         0.000000            0.000000  \n",
       "25%       117.750000            0.000000  \n",
       "50%      1500.000000            0.000000  \n",
       "75%      4000.000000            0.000000  \n",
       "max    528666.000000            1.000000  "
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data[X + [y]].describe() # display descriptive statistics for all columns"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2. Investigate pair-wise Pearson correlations for DEFAULT_NEXT_MONTH\n",
    "\n",
    "Monotonic relationships are much easier to explain to colleagues, bosses, customers, and regulators than more complex, non-monotonic relationships and monotonic relationships may also prevent overfitting and excess error due to variance for new data.\n",
    "\n",
    "To train a transparent monotonic classifier, contraints must be supplied to XGBoost that determine whether the learned relationship between an input variable and the prediction target `DEFAULT_NEXT_MONTH` will be increasing for increases in an input variable or decreasing for increases in an input variable. Pearson correlation provides a linear measure of the direction of the relationship between each input variable and the target. If the pair-wise Pearson correlation between an input and `DEFAULT_NEXT_MONTH` is positive, it will be constrained to have an increasing relationship with the predictions for `DEFAULT_NEXT_MONTH`. If the pair-wise Pearson correlation is negative, the input will be constrained to have a decreasing relationship with the predictions for `DEFAULT_NEXT_MONTH`. \n",
    "\n",
    "Constrainsts are supplied to XGBoost in the form of a Python tuple with length equal to the number of inputs. Each item in the tuple is associated with an input variable based on its index in the tuple. The first constraint in the tuple is associated with the first variable in the training data, the second constraint in the tuple is associated with the second variable in the training data, and so on. The constraints themselves take the form of a 1 for a positive relationship and a -1 for a negative relationship."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Calculate Pearson correlation"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The Pandas `.corr()` function returns the pair-wise Pearson correlation between variables in a Pandas DataFrame. Because `DEFAULT_NEXT_MONTH` is the last column in the `data` DataFrame, the last column of the Pearson correlation matrix indicates the direction of the linear relationship between each input variable and the prediction target, `DEFAULT_NEXT_MONTH`. According to the calculated values, as a customer's balance limit (`LIMIT_BAL`), bill amounts (`BILL_AMT1`-`BILL_AMT6`), and payment amounts (`PAY_AMT1`-`PAY_AMT6`) increase, their probability of default tends to decrease. However as a customer's number of late payments increase (`PAY_0`, `PAY_2`-`PAY6`), their probability of default usually increases. In general, the Pearson correlation values make sense, and they will be used to ensure that the modeled relationships will make sense as well. (Pearson correlation values between the target variable, DEFAULT_NEXT_MONTH, and each input variable are displayed directly below.)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>DEFAULT_NEXT_MONTH</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>LIMIT_BAL</th>\n",
       "      <td>-0.153520</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SEX</th>\n",
       "      <td>-0.039961</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>EDUCATION</th>\n",
       "      <td>0.028006</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>MARRIAGE</th>\n",
       "      <td>-0.024339</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>AGE</th>\n",
       "      <td>0.013890</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>PAY_0</th>\n",
       "      <td>0.324794</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>PAY_2</th>\n",
       "      <td>0.263551</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>PAY_3</th>\n",
       "      <td>0.235253</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>PAY_4</th>\n",
       "      <td>0.216614</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>PAY_5</th>\n",
       "      <td>0.204149</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>PAY_6</th>\n",
       "      <td>0.186866</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BILL_AMT1</th>\n",
       "      <td>-0.019644</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BILL_AMT2</th>\n",
       "      <td>-0.014193</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BILL_AMT3</th>\n",
       "      <td>-0.014076</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BILL_AMT4</th>\n",
       "      <td>-0.010156</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BILL_AMT5</th>\n",
       "      <td>-0.006760</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BILL_AMT6</th>\n",
       "      <td>-0.005372</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>PAY_AMT1</th>\n",
       "      <td>-0.072929</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>PAY_AMT2</th>\n",
       "      <td>-0.058579</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>PAY_AMT3</th>\n",
       "      <td>-0.056250</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>PAY_AMT4</th>\n",
       "      <td>-0.056827</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>PAY_AMT5</th>\n",
       "      <td>-0.055124</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>PAY_AMT6</th>\n",
       "      <td>-0.053183</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           DEFAULT_NEXT_MONTH\n",
       "LIMIT_BAL           -0.153520\n",
       "SEX                 -0.039961\n",
       "EDUCATION            0.028006\n",
       "MARRIAGE            -0.024339\n",
       "AGE                  0.013890\n",
       "PAY_0                0.324794\n",
       "PAY_2                0.263551\n",
       "PAY_3                0.235253\n",
       "PAY_4                0.216614\n",
       "PAY_5                0.204149\n",
       "PAY_6                0.186866\n",
       "BILL_AMT1           -0.019644\n",
       "BILL_AMT2           -0.014193\n",
       "BILL_AMT3           -0.014076\n",
       "BILL_AMT4           -0.010156\n",
       "BILL_AMT5           -0.006760\n",
       "BILL_AMT6           -0.005372\n",
       "PAY_AMT1            -0.072929\n",
       "PAY_AMT2            -0.058579\n",
       "PAY_AMT3            -0.056250\n",
       "PAY_AMT4            -0.056827\n",
       "PAY_AMT5            -0.055124\n",
       "PAY_AMT6            -0.053183"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# displays last column of Pearson correlation matrix as Pandas DataFrame\n",
    "pd.DataFrame(data[X + [y]].corr()[y]).iloc[:-1] "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "#### Create tuple of monotonicity constraints from Pearson correlation values"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The last column of the Pearson correlation matrix is transformed from a numeric column in a Pandas DataFrame into a Python tuple of `1`s and `-1`s that will be used to specifiy monotonicity constraints for each input variable in XGBoost. If the Pearson correlation between an input variable and `DEFAULT_NEXT_MONTH` is positive, a positive montonic relationship constraint is specified for that variable using `1`. If the correlation is negative, a negative monotonic constraint is specified using `-1`. (Specifying `0` indicates that no constraints should be used.) The resulting tuple will be passed to XGBoost when the GBM model is trained."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "# creates a tuple in which positive correlation values are assigned a 1\n",
    "# and negative correlation values are assigned a -1\n",
    "mono_constraints = tuple([int(i) for i in np.sign(data[X + [y]].corr()[y].values[:-1])])\n",
    "\n",
    "# (-1, -1, 1, -1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3. Train XGBoost with monotonicity constraints\n",
    "\n",
    "XGBoost is a very accurate, open source GBM library for regression and classification tasks. XGBoost can learn complex relationships between input variables and a target variable, but here the `monotone_constraints` tuning parameter is used to enforce monotonicity between inputs and the prediction for `DEFAULT_NEXT_MONTH`. XGBoost's early stopping functionality is also used to limit overfitting to the training data\n",
    "\n",
    "XGBoost is available from: https://github.com/dmlc/xgboost and the implementation of XGBoost is described in detail here: http://www.kdd.org/kdd2016/papers/files/rfp0697-chenAemb.pdf.\n",
    "\n",
    "After training, GBM variable importance is calculated and displayed. GBM variable importance is a global measure of the overall impact of an input variable on the GBM model predictions. Global variable importance values give an indication of the magnitude of a variable's contribution to model predictions for all observations. To enhance trust in the GBM model, variable importance values should typically conform to human domain knowledge and reasonable expectations."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Split data into training and test sets for early stopping"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The credit card default data is split into training and test sets to monitor and prevent overtraining. Reproducibility is another important factor in creating trustworthy models, and randomly splitting datasets can introduce randomness in model predictions and other results. A random seed is used here to ensure the data split is reproducible."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train data rows = 20946, columns = 25\n",
      "Test data rows = 9054, columns = 25\n"
     ]
    }
   ],
   "source": [
    "np.random.seed(12345) # set random seed for reproducibility\n",
    "split_ratio = 0.7     # 70%/30% train/test split\n",
    "\n",
    "# execute split\n",
    "split = np.random.rand(len(data)) < split_ratio\n",
    "train = data[split]\n",
    "test = data[~split]\n",
    "\n",
    "# summarize split\n",
    "print('Train data rows = %d, columns = %d' % (train.shape[0], train.shape[1]))\n",
    "print('Test data rows = %d, columns = %d' % (test.shape[0], test.shape[1]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Train XGBoost GBM classifier\n",
    "To train an XGBoost classifier, the training and test data must be converted from Pandas DataFrames into SVMLight format. The `DMatrix()` function in the XGBoost package is used to convert the data. Many XGBoost tuning parameters must be specified as well. Typically a grid search would be performed to identify the best parameters for a given modeling task. For brevity's sake, a previously-discovered set of good tuning parameters are specified here. Notice that the monotonicity constraints are passed to XGBoost using the `monotone_constraints` parameter. Because gradient boosting methods typically resample training data, an additional random seed is also specified for XGBoost using the `seed` paramter to create reproducible predictions, error rates, and variable importance values. To avoid overfitting, the `early_stopping_rounds` parameter is used to stop the training process after the test area under the curve (AUC) statistic fails to increase for 50 iterations."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0]\ttrain-auc:0.738066\teval-auc:0.733449\n",
      "Multiple eval metrics have been passed: 'eval-auc' will be used for early stopping.\n",
      "\n",
      "Will train until eval-auc hasn't improved in 50 rounds.\n",
      "[1]\ttrain-auc:0.772991\teval-auc:0.769311\n",
      "[2]\ttrain-auc:0.775536\teval-auc:0.772624\n",
      "[3]\ttrain-auc:0.776248\teval-auc:0.771985\n",
      "[4]\ttrain-auc:0.777216\teval-auc:0.772796\n",
      "[5]\ttrain-auc:0.777782\teval-auc:0.773066\n",
      "[6]\ttrain-auc:0.777783\teval-auc:0.773471\n",
      "[7]\ttrain-auc:0.777856\teval-auc:0.773591\n",
      "[8]\ttrain-auc:0.777633\teval-auc:0.773209\n",
      "[9]\ttrain-auc:0.777417\teval-auc:0.772892\n",
      "[10]\ttrain-auc:0.777519\teval-auc:0.772666\n",
      "[11]\ttrain-auc:0.778476\teval-auc:0.773346\n",
      "[12]\ttrain-auc:0.778541\teval-auc:0.773312\n",
      "[13]\ttrain-auc:0.778351\teval-auc:0.773266\n",
      "[14]\ttrain-auc:0.778519\teval-auc:0.773695\n",
      "[15]\ttrain-auc:0.779383\teval-auc:0.774314\n",
      "[16]\ttrain-auc:0.779555\teval-auc:0.77473\n",
      "[17]\ttrain-auc:0.780178\teval-auc:0.775043\n",
      "[18]\ttrain-auc:0.780743\teval-auc:0.775246\n",
      "[19]\ttrain-auc:0.78146\teval-auc:0.776021\n",
      "[20]\ttrain-auc:0.781944\teval-auc:0.776477\n",
      "[21]\ttrain-auc:0.782181\teval-auc:0.776696\n",
      "[22]\ttrain-auc:0.782319\teval-auc:0.776915\n",
      "[23]\ttrain-auc:0.78263\teval-auc:0.776998\n",
      "[24]\ttrain-auc:0.782965\teval-auc:0.777144\n",
      "[25]\ttrain-auc:0.783396\teval-auc:0.777498\n",
      "[26]\ttrain-auc:0.783791\teval-auc:0.777791\n",
      "[27]\ttrain-auc:0.784151\teval-auc:0.778091\n",
      "[28]\ttrain-auc:0.784382\teval-auc:0.778375\n",
      "[29]\ttrain-auc:0.784678\teval-auc:0.778567\n",
      "[30]\ttrain-auc:0.784912\teval-auc:0.778755\n",
      "[31]\ttrain-auc:0.785231\teval-auc:0.778938\n",
      "[32]\ttrain-auc:0.785418\teval-auc:0.779125\n",
      "[33]\ttrain-auc:0.785598\teval-auc:0.779226\n",
      "[34]\ttrain-auc:0.785838\teval-auc:0.779421\n",
      "[35]\ttrain-auc:0.7861\teval-auc:0.779432\n",
      "[36]\ttrain-auc:0.786347\teval-auc:0.779549\n",
      "[37]\ttrain-auc:0.786633\teval-auc:0.779575\n",
      "[38]\ttrain-auc:0.786833\teval-auc:0.779668\n",
      "[39]\ttrain-auc:0.787093\teval-auc:0.779743\n",
      "[40]\ttrain-auc:0.787307\teval-auc:0.779926\n",
      "[41]\ttrain-auc:0.787602\teval-auc:0.780015\n",
      "[42]\ttrain-auc:0.787819\teval-auc:0.780089\n",
      "[43]\ttrain-auc:0.787943\teval-auc:0.780196\n",
      "[44]\ttrain-auc:0.788092\teval-auc:0.780239\n",
      "[45]\ttrain-auc:0.788194\teval-auc:0.780198\n",
      "[46]\ttrain-auc:0.788298\teval-auc:0.780235\n",
      "[47]\ttrain-auc:0.788422\teval-auc:0.780305\n",
      "[48]\ttrain-auc:0.78862\teval-auc:0.780372\n",
      "[49]\ttrain-auc:0.788803\teval-auc:0.780392\n",
      "[50]\ttrain-auc:0.789049\teval-auc:0.780558\n",
      "[51]\ttrain-auc:0.789221\teval-auc:0.780659\n",
      "[52]\ttrain-auc:0.789405\teval-auc:0.780756\n",
      "[53]\ttrain-auc:0.789553\teval-auc:0.780721\n",
      "[54]\ttrain-auc:0.78968\teval-auc:0.780791\n",
      "[55]\ttrain-auc:0.789779\teval-auc:0.780849\n",
      "[56]\ttrain-auc:0.789875\teval-auc:0.780932\n",
      "[57]\ttrain-auc:0.79002\teval-auc:0.780963\n",
      "[58]\ttrain-auc:0.790156\teval-auc:0.781038\n",
      "[59]\ttrain-auc:0.790292\teval-auc:0.781085\n",
      "[60]\ttrain-auc:0.790403\teval-auc:0.781079\n",
      "[61]\ttrain-auc:0.790509\teval-auc:0.781091\n",
      "[62]\ttrain-auc:0.790554\teval-auc:0.781061\n",
      "[63]\ttrain-auc:0.790635\teval-auc:0.781148\n",
      "[64]\ttrain-auc:0.790679\teval-auc:0.781166\n",
      "[65]\ttrain-auc:0.790822\teval-auc:0.781155\n",
      "[66]\ttrain-auc:0.790896\teval-auc:0.781178\n",
      "[67]\ttrain-auc:0.790977\teval-auc:0.781188\n",
      "[68]\ttrain-auc:0.791155\teval-auc:0.781211\n",
      "[69]\ttrain-auc:0.791239\teval-auc:0.781179\n",
      "[70]\ttrain-auc:0.7914\teval-auc:0.781347\n",
      "[71]\ttrain-auc:0.791525\teval-auc:0.78134\n",
      "[72]\ttrain-auc:0.791578\teval-auc:0.781312\n",
      "[73]\ttrain-auc:0.791691\teval-auc:0.781325\n",
      "[74]\ttrain-auc:0.791747\teval-auc:0.781323\n",
      "[75]\ttrain-auc:0.791801\teval-auc:0.781304\n",
      "[76]\ttrain-auc:0.791844\teval-auc:0.781313\n",
      "[77]\ttrain-auc:0.7919\teval-auc:0.781325\n",
      "[78]\ttrain-auc:0.792056\teval-auc:0.781448\n",
      "[79]\ttrain-auc:0.792088\teval-auc:0.781397\n",
      "[80]\ttrain-auc:0.792151\teval-auc:0.78138\n",
      "[81]\ttrain-auc:0.792173\teval-auc:0.781388\n",
      "[82]\ttrain-auc:0.792236\teval-auc:0.781301\n",
      "[83]\ttrain-auc:0.792327\teval-auc:0.781355\n",
      "[84]\ttrain-auc:0.792372\teval-auc:0.781356\n",
      "[85]\ttrain-auc:0.792402\teval-auc:0.781321\n",
      "[86]\ttrain-auc:0.79247\teval-auc:0.781286\n",
      "[87]\ttrain-auc:0.792521\teval-auc:0.781283\n",
      "[88]\ttrain-auc:0.792543\teval-auc:0.781265\n",
      "[89]\ttrain-auc:0.792595\teval-auc:0.781255\n",
      "[90]\ttrain-auc:0.792618\teval-auc:0.781242\n",
      "[91]\ttrain-auc:0.792673\teval-auc:0.781309\n",
      "[92]\ttrain-auc:0.792766\teval-auc:0.781357\n",
      "[93]\ttrain-auc:0.792826\teval-auc:0.781381\n",
      "[94]\ttrain-auc:0.792914\teval-auc:0.781387\n",
      "[95]\ttrain-auc:0.792967\teval-auc:0.781385\n",
      "[96]\ttrain-auc:0.793016\teval-auc:0.781375\n",
      "[97]\ttrain-auc:0.793053\teval-auc:0.781353\n",
      "[98]\ttrain-auc:0.79312\teval-auc:0.78137\n",
      "[99]\ttrain-auc:0.793145\teval-auc:0.781413\n",
      "[100]\ttrain-auc:0.793191\teval-auc:0.781456\n",
      "[101]\ttrain-auc:0.793256\teval-auc:0.781435\n",
      "[102]\ttrain-auc:0.793282\teval-auc:0.781382\n",
      "[103]\ttrain-auc:0.793322\teval-auc:0.781385\n",
      "[104]\ttrain-auc:0.793346\teval-auc:0.781361\n",
      "[105]\ttrain-auc:0.793399\teval-auc:0.781418\n",
      "[106]\ttrain-auc:0.793436\teval-auc:0.781398\n",
      "[107]\ttrain-auc:0.793511\teval-auc:0.781358\n",
      "[108]\ttrain-auc:0.793578\teval-auc:0.78137\n",
      "[109]\ttrain-auc:0.793655\teval-auc:0.781336\n",
      "[110]\ttrain-auc:0.793683\teval-auc:0.781299\n",
      "[111]\ttrain-auc:0.793701\teval-auc:0.781277\n",
      "[112]\ttrain-auc:0.79371\teval-auc:0.78128\n",
      "[113]\ttrain-auc:0.793745\teval-auc:0.781298\n",
      "[114]\ttrain-auc:0.793817\teval-auc:0.781307\n",
      "[115]\ttrain-auc:0.793838\teval-auc:0.781301\n",
      "[116]\ttrain-auc:0.793867\teval-auc:0.781308\n",
      "[117]\ttrain-auc:0.793877\teval-auc:0.781315\n",
      "[118]\ttrain-auc:0.793917\teval-auc:0.781246\n",
      "[119]\ttrain-auc:0.793947\teval-auc:0.781302\n",
      "[120]\ttrain-auc:0.794\teval-auc:0.781358\n",
      "[121]\ttrain-auc:0.794026\teval-auc:0.781357\n",
      "[122]\ttrain-auc:0.794053\teval-auc:0.781277\n",
      "[123]\ttrain-auc:0.794064\teval-auc:0.781257\n",
      "[124]\ttrain-auc:0.794209\teval-auc:0.781289\n",
      "[125]\ttrain-auc:0.794219\teval-auc:0.781288\n",
      "[126]\ttrain-auc:0.794287\teval-auc:0.781347\n",
      "[127]\ttrain-auc:0.79429\teval-auc:0.781347\n",
      "[128]\ttrain-auc:0.794327\teval-auc:0.781331\n",
      "[129]\ttrain-auc:0.794336\teval-auc:0.781349\n",
      "[130]\ttrain-auc:0.794367\teval-auc:0.781347\n",
      "[131]\ttrain-auc:0.794364\teval-auc:0.78134\n",
      "[132]\ttrain-auc:0.794385\teval-auc:0.781363\n",
      "[133]\ttrain-auc:0.794387\teval-auc:0.781326\n",
      "[134]\ttrain-auc:0.794472\teval-auc:0.78132\n",
      "[135]\ttrain-auc:0.794483\teval-auc:0.781326\n",
      "[136]\ttrain-auc:0.794495\teval-auc:0.781306\n",
      "[137]\ttrain-auc:0.794583\teval-auc:0.781293\n",
      "[138]\ttrain-auc:0.794589\teval-auc:0.781293\n",
      "[139]\ttrain-auc:0.7946\teval-auc:0.781286\n",
      "[140]\ttrain-auc:0.794642\teval-auc:0.7813\n",
      "[141]\ttrain-auc:0.794656\teval-auc:0.781303\n",
      "[142]\ttrain-auc:0.794654\teval-auc:0.781287\n",
      "[143]\ttrain-auc:0.794695\teval-auc:0.781273\n",
      "[144]\ttrain-auc:0.794705\teval-auc:0.781268\n",
      "[145]\ttrain-auc:0.794708\teval-auc:0.781268\n",
      "[146]\ttrain-auc:0.79471\teval-auc:0.781258\n",
      "[147]\ttrain-auc:0.794775\teval-auc:0.781284\n",
      "[148]\ttrain-auc:0.794782\teval-auc:0.781277\n",
      "[149]\ttrain-auc:0.794794\teval-auc:0.781283\n",
      "[150]\ttrain-auc:0.794815\teval-auc:0.78126\n",
      "Stopping. Best iteration:\n",
      "[100]\ttrain-auc:0.793191\teval-auc:0.781456\n",
      "\n"
     ]
    }
   ],
   "source": [
    "# XGBoost uses SVMLight data structure, not Numpy arrays or Pandas DataFrames \n",
    "dtrain = xgb.DMatrix(train[X], train[y])\n",
    "dtest = xgb.DMatrix(test[X], test[y])\n",
    "\n",
    "# used to calibrate predictions to mean of y \n",
    "base_y = train[y].mean()\n",
    "\n",
    "# tuning parameters\n",
    "params = {\n",
    "    'objective': 'binary:logistic',             # produces 0-1 probabilities for binary classification\n",
    "    'booster': 'gbtree',                        # base learner will be decision tree\n",
    "    'eval_metric': 'auc',                       # stop training based on maximum AUC, AUC always between 0-1\n",
    "    'eta': 0.08,                                # learning rate\n",
    "    'subsample': 0.9,                           # use 90% of rows in each decision tree\n",
    "    'colsample_bytree': 0.9,                    # use 90% of columns in each decision tree\n",
    "    'max_depth': 15,                            # allow decision trees to grow to depth of 15\n",
    "    'monotone_constraints':mono_constraints,    # 1 = increasing relationship, -1 = decreasing relationship\n",
    "    'base_score': base_y,                       # calibrate predictions to mean of y \n",
    "    'seed': 12345                               # set random seed for reproducibility\n",
    "}\n",
    "\n",
    "# watchlist is used for early stopping\n",
    "watchlist = [(dtrain, 'train'), (dtest, 'eval')]\n",
    "\n",
    "# train model\n",
    "xgb_model = xgb.train(params,                   # set tuning parameters from above                   \n",
    "                      dtrain,                   # training data\n",
    "                      1000,                     # maximum of 1000 iterations (trees)\n",
    "                      evals=watchlist,          # use watchlist for early stopping \n",
    "                      early_stopping_rounds=50, # stop after 50 iterations (trees) without increase in AUC\n",
    "                      verbose_eval=True)        # display iteration progress\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Global Shapley variable importance\n",
    "By setting `pred_contribs=True`, XGBoost's `predict()` function will return Shapley values for each row of the test set. Instead of relying on traditional single-value variable importance measures, local Shapley values for each input will be ploted below to get a more holistic and consisent measurement for the global importance of each input variable. Shapley values are introduced in greater detail in Section 6 below, but for now notice the monotonicity of the input variable contributions displayed in the Shapley summary plot."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "# dtest is DMatrix\n",
    "# shap_values is Numpy array\n",
    "shap_values = xgb_model.predict(dtest, pred_contribs=True, ntree_limit=xgb_model.best_ntree_limit)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f06a86f11d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot Shapley variable importance summary \n",
    "shap.summary_plot(shap_values[:, :-1], test[xgb_model.feature_names])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "####  Display Shapley variable importance summary\n",
    "The variable importance ranking should be parsimonious with human domain knowledge and reasonable expectations. In this case, `PAY_0` is by far the most important variable. As someone's most recent behavior is a very good indicator of future behavior, this checks out."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4. Calculating partial dependence and ICE to validate and explain monotonic behavior\n",
    "\n",
    "Partial dependence plots are used to view the global, average prediction behavior of a variable under the monotonic model. Partial dependence plots show the average prediction of the monotonic model as a function of specific values of an input variable of interest, indicating how the monotonic GBM predictions change based on the values of the input variable of interest, while taking nonlinearity into consideration and averaging out the effects of all other\n",
    "input variables. Partial dependence plots enable increased transparency into the monotonic GBM's mechanisms and enable validation and debugging of the monotonic GBM by comparing a variable's average predictions across its domain to known standards and reasonable expectations. Partial dependence plots are described in greater detail in *The Elements of Statistical Learning*, section 10.13: https://web.stanford.edu/~hastie/ElemStatLearn/printings/ESLII_print12.pdf.\n",
    "\n",
    "Individual conditional expectation (ICE) plots, a newer and less well-known adaptation of partial dependence plots, can be used to create more localized explanations for a single observation of data using the same basic ideas as partial dependence plots. ICE is also a type of nonlinear sensitivity analysis in which the model predictions for a single observation are measured while a feature of interest is varied over its domain. ICE increases understanding and transparency by displaying the nonlinear behavior of the monotonic GBM. ICE also enhances trust, accountability, and fairness by enabling comparisons of nonlinear behavior to human domain knowledge and reasonable expectations. ICE, as a type of sensitivity analysis, can also engender trust when model behavior on simulated or extreme data points is acceptable. A detailed description of ICE is available in this arXiv preprint: https://arxiv.org/abs/1309.6392.\n",
    "\n",
    "Because partial dependence and ICE are measured on the same scale, they can be displayed in the same line plot to compare the global, average prediction behavior for the entire model and the local prediction behavior for certain rows of data. Overlaying the two types of curves enables analysis of both global and local behavior simultaneously and provides an indication of the trustworthiness of the average behavior represented by partial dependence. (Partial dependence can be misleading in the presence of strong interactions or correlation. ICE curves diverging from the partial dependence curve can be indicative of such problems.) Histograms are also presented with the partial dependence and ICE curves, to enable a rough measure of epistemic uncertainty for model predictions: predictions based on small amounts of training data are likely less dependable."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Function for calculating partial dependence\n",
    "Since partial dependence and ICE will be calculated for several important variables in the GBM model, it's convenient to have a function doing so. It's probably best to analyze partial dependence and ICE for all variables in a model, but only the top three most important input variables will be investigated here. It's also a good idea to analyze partial dependence and ICE on the test data, or other holdout datasets, to see how the model will perform on new data. \n",
    "This simple function is designed to return partial dependence when it is called for an entire dataset and ICE when it is called for a single row. The `bins` argument will be used later to calculate ICE values at the same places in an input variable domain that partial dependence is calculated directly below. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "def par_dep(xs, frame, model, resolution=20, bins=None):\n",
    "    \n",
    "    \"\"\" Creates Pandas DataFrame containing partial dependence for a \n",
    "        single variable.\n",
    "    \n",
    "    Args:\n",
    "        xs: Variable for which to calculate partial dependence.\n",
    "        frame: Pandas DataFrame for which to calculate partial dependence.\n",
    "        model: XGBoost model for which to calculate partial dependence.\n",
    "        resolution: The number of points across the domain of xs for which \n",
    "                    to calculate partial dependence, default 20.\n",
    "        bins: List of values at which to set xs, default 20 equally-spaced \n",
    "              points between column minimum and maximum.\n",
    "    \n",
    "    Returns:\n",
    "        Pandas DataFrame containing partial dependence values.\n",
    "        \n",
    "    \"\"\"\n",
    "    \n",
    "    # turn off pesky Pandas copy warning\n",
    "    pd.options.mode.chained_assignment = None\n",
    "    \n",
    "    # initialize empty Pandas DataFrame with correct column names\n",
    "    par_dep_frame = pd.DataFrame(columns=[xs, 'partial_dependence'])\n",
    "    \n",
    "    # cache original column values \n",
    "    col_cache = frame.loc[:, xs].copy(deep=True)\n",
    "  \n",
    "    # determine values at which to calculate partial dependence\n",
    "    if bins == None:\n",
    "        min_ = frame[xs].min()\n",
    "        max_ = frame[xs].max()\n",
    "        by = (max_ - min_)/resolution\n",
    "        bins = np.arange(min_, max_, by)\n",
    "        \n",
    "    # calculate partial dependence  \n",
    "    # by setting column of interest to constant \n",
    "    # and scoring the altered data and taking the mean of the predictions\n",
    "    for j in bins:\n",
    "        frame.loc[:, xs] = j\n",
    "        dframe = xgb.DMatrix(frame)\n",
    "        par_dep_i = pd.DataFrame(model.predict(dframe, ntree_limit=model.best_ntree_limit))\n",
    "        par_dep_j = par_dep_i.mean()[0]\n",
    "        par_dep_frame = par_dep_frame.append({xs:j,\n",
    "                                              'partial_dependence': par_dep_j}, \n",
    "                                              ignore_index=True)\n",
    "        \n",
    "    # return input frame to original cached state    \n",
    "    frame.loc[:, xs] = col_cache\n",
    "\n",
    "    return par_dep_frame\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Calculate partial dependence for the most important input variables in the GBM\n",
    "The partial dependence for `LIMIT_BAL` can be seen to decrease as credit balance limits increase. This finding is aligned with expectations that the model predictions will be monotonically decreasing with increasing `LIMIT_BAL` and parsimonious with well-known business practices in credit lending. Partial dependence for other important values is displayed in plots further below."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>LIMIT_BAL</th>\n",
       "      <th>partial_dependence</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>10000.0</td>\n",
       "      <td>0.266888</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>59500.0</td>\n",
       "      <td>0.243301</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>109000.0</td>\n",
       "      <td>0.224759</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>158500.0</td>\n",
       "      <td>0.216966</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>208000.0</td>\n",
       "      <td>0.214594</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>257500.0</td>\n",
       "      <td>0.209798</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>307000.0</td>\n",
       "      <td>0.206901</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>356500.0</td>\n",
       "      <td>0.198712</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>406000.0</td>\n",
       "      <td>0.197883</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>455500.0</td>\n",
       "      <td>0.197086</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>505000.0</td>\n",
       "      <td>0.194449</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>554500.0</td>\n",
       "      <td>0.194407</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>604000.0</td>\n",
       "      <td>0.190247</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>653500.0</td>\n",
       "      <td>0.190209</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>703000.0</td>\n",
       "      <td>0.190188</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>752500.0</td>\n",
       "      <td>0.190188</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>802000.0</td>\n",
       "      <td>0.190188</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>851500.0</td>\n",
       "      <td>0.190188</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>901000.0</td>\n",
       "      <td>0.190188</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>950500.0</td>\n",
       "      <td>0.190188</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    LIMIT_BAL  partial_dependence\n",
       "0     10000.0            0.266888\n",
       "1     59500.0            0.243301\n",
       "2    109000.0            0.224759\n",
       "3    158500.0            0.216966\n",
       "4    208000.0            0.214594\n",
       "5    257500.0            0.209798\n",
       "6    307000.0            0.206901\n",
       "7    356500.0            0.198712\n",
       "8    406000.0            0.197883\n",
       "9    455500.0            0.197086\n",
       "10   505000.0            0.194449\n",
       "11   554500.0            0.194407\n",
       "12   604000.0            0.190247\n",
       "13   653500.0            0.190209\n",
       "14   703000.0            0.190188\n",
       "15   752500.0            0.190188\n",
       "16   802000.0            0.190188\n",
       "17   851500.0            0.190188\n",
       "18   901000.0            0.190188\n",
       "19   950500.0            0.190188"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "par_dep_PAY_0 = par_dep('PAY_0', test[X], xgb_model)         # calculate partial dependence for PAY_0\n",
    "par_dep_LIMIT_BAL = par_dep('LIMIT_BAL', test[X], xgb_model) # calculate partial dependence for LIMIT_BAL\n",
    "par_dep_BILL_AMT1 = par_dep('BILL_AMT1', test[X], xgb_model) # calculate partial dependence for BILL_AMT1\n",
    "\n",
    "# display partial dependence for LIMIT_BAL\n",
    "par_dep_LIMIT_BAL"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Helper function for finding percentiles of predictions"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "ICE can be calculated for any row in the training or test data, but without intimate knowledge of a data source it can be difficult to know where to apply ICE. Calculating and analyzing ICE curves for every row of training and test data set can be overwhelming, even for the example credit card default dataset. One place to start with ICE is to calculate ICE curves at every decile of predicted probabilities in a dataset, giving an indication of local prediction behavior across the dataset. The function below finds and returns the row indices for the maximum, minimum, and deciles of one column in terms of another -- in this case, the model predictions (`p_DEFAULT_NEXT_MONTH`) and the row identifier (`ID`), respectively. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_percentile_dict(yhat, id_, frame):\n",
    "\n",
    "    \"\"\" Returns the percentiles of a column, yhat, as the indices based on \n",
    "        another column id_.\n",
    "    \n",
    "    Args:\n",
    "        yhat: Column in which to find percentiles.\n",
    "        id_: Id column that stores indices for percentiles of yhat.\n",
    "        frame: Pandas DataFrame containing yhat and id_. \n",
    "    \n",
    "    Returns:\n",
    "        Dictionary of percentile values and index column values.\n",
    "    \n",
    "    \"\"\"\n",
    "    \n",
    "    # create a copy of frame and sort it by yhat\n",
    "    sort_df = frame.copy(deep=True)\n",
    "    sort_df.sort_values(yhat, inplace=True)\n",
    "    sort_df.reset_index(inplace=True)\n",
    "    \n",
    "    # find top and bottom percentiles\n",
    "    percentiles_dict = {}\n",
    "    percentiles_dict[0] = sort_df.loc[0, id_]\n",
    "    percentiles_dict[99] = sort_df.loc[sort_df.shape[0]-1, id_]\n",
    "\n",
    "    # find 10th-90th percentiles\n",
    "    inc = sort_df.shape[0]//10\n",
    "    for i in range(1, 10):\n",
    "        percentiles_dict[i * 10] = sort_df.loc[i * inc,  id_]\n",
    "\n",
    "    return percentiles_dict\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Find some percentiles of yhat in the test data\n",
    "The values for `ID` that correspond to the maximum, minimum, and deciles of `p_DEFAULT_NEXT_MONTH` are displayed below. ICE will be calculated for the rows of the test dataset associated with these `ID` values."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{0: 23477,\n",
       " 10: 6226,\n",
       " 20: 25603,\n",
       " 30: 12890,\n",
       " 40: 715,\n",
       " 50: 14517,\n",
       " 60: 4908,\n",
       " 70: 7411,\n",
       " 80: 6219,\n",
       " 90: 18421,\n",
       " 99: 17757}"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# merge GBM predictions onto test data\n",
    "yhat_test = pd.concat([test.reset_index(drop=True), pd.DataFrame(xgb_model.predict(dtest, \n",
    "                                                                                   ntree_limit=xgb_model.best_ntree_limit))],\n",
    "                      axis=1)\n",
    "yhat_test = yhat_test.rename(columns={0:'p_DEFAULT_NEXT_MONTH'})\n",
    "\n",
    "# find percentiles of predictions\n",
    "percentile_dict = get_percentile_dict('p_DEFAULT_NEXT_MONTH', 'ID', yhat_test)\n",
    "\n",
    "# display percentiles dictionary\n",
    "# ID values for rows\n",
    "# from lowest prediction \n",
    "# to highest prediction\n",
    "percentile_dict"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Calculate ICE curve values\n",
    "ICE values represent a model's prediction for a row of data while an input variable of interest is varied across its domain. The values of the input variable are chosen to match the values at which partial dependence was calculated earlier, and ICE is calculated for the top three most important variables and for rows at each percentile of the test dataset. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "# retreive bins from original partial dependence calculation\n",
    "\n",
    "bins_PAY_0 = list(par_dep_PAY_0['PAY_0'])\n",
    "bins_LIMIT_BAL = list(par_dep_LIMIT_BAL['LIMIT_BAL'])\n",
    "bins_BILL_AMT1 = list(par_dep_BILL_AMT1['BILL_AMT1'])\n",
    "\n",
    "# for each percentile in percentile_dict\n",
    "# create a new column in the par_dep frame \n",
    "# representing the ICE curve for that percentile\n",
    "# and the variables of interest\n",
    "for i in sorted(percentile_dict.keys()):\n",
    "    \n",
    "    col_name = 'Percentile_' + str(i)\n",
    "    \n",
    "    # ICE curves for PAY_0 across percentiles at bins_PAY_0 intervals\n",
    "    par_dep_PAY_0[col_name] = par_dep('PAY_0', \n",
    "                                    test[test['ID'] == int(percentile_dict[i])][X],  \n",
    "                                    xgb_model, \n",
    "                                    bins=bins_PAY_0)['partial_dependence']\n",
    "    \n",
    "    # ICE curves for LIMIT_BAL across percentiles at bins_LIMIT_BAL intervals\n",
    "    par_dep_LIMIT_BAL[col_name] = par_dep('LIMIT_BAL', \n",
    "                                          test[test['ID'] == int(percentile_dict[i])][X], \n",
    "                                          xgb_model, \n",
    "                                          bins=bins_LIMIT_BAL)['partial_dependence']\n",
    "    \n",
    "\n",
    "\n",
    "    # ICE curves for BILL_AMT1 across percentiles at bins_BILL_AMT1 intervals\n",
    "    par_dep_BILL_AMT1[col_name] = par_dep('BILL_AMT1', \n",
    "                                          test[test['ID'] == int(percentile_dict[i])][X],  \n",
    "                                          xgb_model, \n",
    "                                          bins=bins_BILL_AMT1)['partial_dependence']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Display partial dependence and ICE for `LIMIT_BAL`\n",
    "Partial dependence and ICE values for rows at the minimum, maximum and deciles (0%, 10%, 20%, ..., 90%, 99%) of predictions for `DEFAULT_NEXT_MONTH` and at the values of `LIMIT_BAL` used for partial dependence are shown here. Each column of ICE values will be a curve in the plots below. ICE values represent a prediction for a row of test data, at a percentile of interest noted in the column name above, and setting `LIMIT_BAL` to the value of `LIMIT_BAL` at right. Notice that monotonic decreasing prediction behavior for `LIMIT_BAL` holds at each displayed percentile of predicted `DEFAULT_NEXT_MONTH`, helping to validate that the trained GBM predictions are monotonic for `LIMIT_BAL`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>LIMIT_BAL</th>\n",
       "      <th>partial_dependence</th>\n",
       "      <th>Percentile_0</th>\n",
       "      <th>Percentile_10</th>\n",
       "      <th>Percentile_20</th>\n",
       "      <th>Percentile_30</th>\n",
       "      <th>Percentile_40</th>\n",
       "      <th>Percentile_50</th>\n",
       "      <th>Percentile_60</th>\n",
       "      <th>Percentile_70</th>\n",
       "      <th>Percentile_80</th>\n",
       "      <th>Percentile_90</th>\n",
       "      <th>Percentile_99</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>10000.0</td>\n",
       "      <td>0.266888</td>\n",
       "      <td>0.009752</td>\n",
       "      <td>0.103610</td>\n",
       "      <td>0.114130</td>\n",
       "      <td>0.161717</td>\n",
       "      <td>0.178196</td>\n",
       "      <td>0.176423</td>\n",
       "      <td>0.215932</td>\n",
       "      <td>0.237970</td>\n",
       "      <td>0.482309</td>\n",
       "      <td>0.600873</td>\n",
       "      <td>0.963266</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>59500.0</td>\n",
       "      <td>0.243301</td>\n",
       "      <td>0.007765</td>\n",
       "      <td>0.095805</td>\n",
       "      <td>0.106769</td>\n",
       "      <td>0.151972</td>\n",
       "      <td>0.155897</td>\n",
       "      <td>0.162622</td>\n",
       "      <td>0.177366</td>\n",
       "      <td>0.206651</td>\n",
       "      <td>0.337691</td>\n",
       "      <td>0.589542</td>\n",
       "      <td>0.943703</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>109000.0</td>\n",
       "      <td>0.224759</td>\n",
       "      <td>0.004514</td>\n",
       "      <td>0.073701</td>\n",
       "      <td>0.089827</td>\n",
       "      <td>0.122272</td>\n",
       "      <td>0.147910</td>\n",
       "      <td>0.129995</td>\n",
       "      <td>0.164410</td>\n",
       "      <td>0.186139</td>\n",
       "      <td>0.330370</td>\n",
       "      <td>0.575241</td>\n",
       "      <td>0.939937</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>158500.0</td>\n",
       "      <td>0.216966</td>\n",
       "      <td>0.003510</td>\n",
       "      <td>0.061587</td>\n",
       "      <td>0.082731</td>\n",
       "      <td>0.108702</td>\n",
       "      <td>0.139923</td>\n",
       "      <td>0.117246</td>\n",
       "      <td>0.158431</td>\n",
       "      <td>0.174685</td>\n",
       "      <td>0.330370</td>\n",
       "      <td>0.571536</td>\n",
       "      <td>0.939715</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>208000.0</td>\n",
       "      <td>0.214594</td>\n",
       "      <td>0.003208</td>\n",
       "      <td>0.059036</td>\n",
       "      <td>0.081863</td>\n",
       "      <td>0.106850</td>\n",
       "      <td>0.137178</td>\n",
       "      <td>0.115268</td>\n",
       "      <td>0.158413</td>\n",
       "      <td>0.171402</td>\n",
       "      <td>0.330370</td>\n",
       "      <td>0.569508</td>\n",
       "      <td>0.938817</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>257500.0</td>\n",
       "      <td>0.209798</td>\n",
       "      <td>0.002925</td>\n",
       "      <td>0.054268</td>\n",
       "      <td>0.078228</td>\n",
       "      <td>0.102988</td>\n",
       "      <td>0.134296</td>\n",
       "      <td>0.113019</td>\n",
       "      <td>0.155023</td>\n",
       "      <td>0.166766</td>\n",
       "      <td>0.330130</td>\n",
       "      <td>0.559060</td>\n",
       "      <td>0.936782</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>307000.0</td>\n",
       "      <td>0.206901</td>\n",
       "      <td>0.002824</td>\n",
       "      <td>0.053263</td>\n",
       "      <td>0.075723</td>\n",
       "      <td>0.100607</td>\n",
       "      <td>0.133915</td>\n",
       "      <td>0.109701</td>\n",
       "      <td>0.152706</td>\n",
       "      <td>0.162116</td>\n",
       "      <td>0.330130</td>\n",
       "      <td>0.555402</td>\n",
       "      <td>0.935711</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>356500.0</td>\n",
       "      <td>0.198712</td>\n",
       "      <td>0.001872</td>\n",
       "      <td>0.046365</td>\n",
       "      <td>0.066366</td>\n",
       "      <td>0.083248</td>\n",
       "      <td>0.128932</td>\n",
       "      <td>0.090932</td>\n",
       "      <td>0.150245</td>\n",
       "      <td>0.147120</td>\n",
       "      <td>0.329356</td>\n",
       "      <td>0.552223</td>\n",
       "      <td>0.935394</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>406000.0</td>\n",
       "      <td>0.197883</td>\n",
       "      <td>0.001872</td>\n",
       "      <td>0.045775</td>\n",
       "      <td>0.064863</td>\n",
       "      <td>0.081453</td>\n",
       "      <td>0.127613</td>\n",
       "      <td>0.090882</td>\n",
       "      <td>0.149558</td>\n",
       "      <td>0.146809</td>\n",
       "      <td>0.324522</td>\n",
       "      <td>0.550167</td>\n",
       "      <td>0.934938</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>455500.0</td>\n",
       "      <td>0.197086</td>\n",
       "      <td>0.001872</td>\n",
       "      <td>0.044761</td>\n",
       "      <td>0.063219</td>\n",
       "      <td>0.079312</td>\n",
       "      <td>0.126955</td>\n",
       "      <td>0.088818</td>\n",
       "      <td>0.149372</td>\n",
       "      <td>0.146495</td>\n",
       "      <td>0.322438</td>\n",
       "      <td>0.550167</td>\n",
       "      <td>0.934894</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>505000.0</td>\n",
       "      <td>0.194449</td>\n",
       "      <td>0.001847</td>\n",
       "      <td>0.044276</td>\n",
       "      <td>0.062503</td>\n",
       "      <td>0.078314</td>\n",
       "      <td>0.121430</td>\n",
       "      <td>0.087403</td>\n",
       "      <td>0.143454</td>\n",
       "      <td>0.143816</td>\n",
       "      <td>0.314405</td>\n",
       "      <td>0.549231</td>\n",
       "      <td>0.934661</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>554500.0</td>\n",
       "      <td>0.194407</td>\n",
       "      <td>0.001847</td>\n",
       "      <td>0.044262</td>\n",
       "      <td>0.062484</td>\n",
       "      <td>0.078040</td>\n",
       "      <td>0.121430</td>\n",
       "      <td>0.087377</td>\n",
       "      <td>0.143394</td>\n",
       "      <td>0.143775</td>\n",
       "      <td>0.314405</td>\n",
       "      <td>0.549195</td>\n",
       "      <td>0.934661</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>604000.0</td>\n",
       "      <td>0.190247</td>\n",
       "      <td>0.001763</td>\n",
       "      <td>0.042238</td>\n",
       "      <td>0.059409</td>\n",
       "      <td>0.074256</td>\n",
       "      <td>0.119003</td>\n",
       "      <td>0.083055</td>\n",
       "      <td>0.139884</td>\n",
       "      <td>0.137249</td>\n",
       "      <td>0.307714</td>\n",
       "      <td>0.547538</td>\n",
       "      <td>0.933731</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>653500.0</td>\n",
       "      <td>0.190209</td>\n",
       "      <td>0.001763</td>\n",
       "      <td>0.042231</td>\n",
       "      <td>0.059384</td>\n",
       "      <td>0.074229</td>\n",
       "      <td>0.119003</td>\n",
       "      <td>0.082968</td>\n",
       "      <td>0.139812</td>\n",
       "      <td>0.137186</td>\n",
       "      <td>0.307588</td>\n",
       "      <td>0.547495</td>\n",
       "      <td>0.933731</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>703000.0</td>\n",
       "      <td>0.190188</td>\n",
       "      <td>0.001763</td>\n",
       "      <td>0.042211</td>\n",
       "      <td>0.059356</td>\n",
       "      <td>0.074195</td>\n",
       "      <td>0.119003</td>\n",
       "      <td>0.082929</td>\n",
       "      <td>0.139812</td>\n",
       "      <td>0.137126</td>\n",
       "      <td>0.307588</td>\n",
       "      <td>0.547370</td>\n",
       "      <td>0.933731</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>752500.0</td>\n",
       "      <td>0.190188</td>\n",
       "      <td>0.001763</td>\n",
       "      <td>0.042211</td>\n",
       "      <td>0.059356</td>\n",
       "      <td>0.074195</td>\n",
       "      <td>0.119003</td>\n",
       "      <td>0.082929</td>\n",
       "      <td>0.139812</td>\n",
       "      <td>0.137126</td>\n",
       "      <td>0.307588</td>\n",
       "      <td>0.547370</td>\n",
       "      <td>0.933731</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>802000.0</td>\n",
       "      <td>0.190188</td>\n",
       "      <td>0.001763</td>\n",
       "      <td>0.042211</td>\n",
       "      <td>0.059356</td>\n",
       "      <td>0.074195</td>\n",
       "      <td>0.119003</td>\n",
       "      <td>0.082929</td>\n",
       "      <td>0.139812</td>\n",
       "      <td>0.137126</td>\n",
       "      <td>0.307588</td>\n",
       "      <td>0.547370</td>\n",
       "      <td>0.933731</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>851500.0</td>\n",
       "      <td>0.190188</td>\n",
       "      <td>0.001763</td>\n",
       "      <td>0.042211</td>\n",
       "      <td>0.059356</td>\n",
       "      <td>0.074195</td>\n",
       "      <td>0.119003</td>\n",
       "      <td>0.082929</td>\n",
       "      <td>0.139812</td>\n",
       "      <td>0.137126</td>\n",
       "      <td>0.307588</td>\n",
       "      <td>0.547370</td>\n",
       "      <td>0.933731</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>901000.0</td>\n",
       "      <td>0.190188</td>\n",
       "      <td>0.001763</td>\n",
       "      <td>0.042211</td>\n",
       "      <td>0.059356</td>\n",
       "      <td>0.074195</td>\n",
       "      <td>0.119003</td>\n",
       "      <td>0.082929</td>\n",
       "      <td>0.139812</td>\n",
       "      <td>0.137126</td>\n",
       "      <td>0.307588</td>\n",
       "      <td>0.547370</td>\n",
       "      <td>0.933731</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>950500.0</td>\n",
       "      <td>0.190188</td>\n",
       "      <td>0.001763</td>\n",
       "      <td>0.042211</td>\n",
       "      <td>0.059356</td>\n",
       "      <td>0.074195</td>\n",
       "      <td>0.119003</td>\n",
       "      <td>0.082929</td>\n",
       "      <td>0.139812</td>\n",
       "      <td>0.137126</td>\n",
       "      <td>0.307588</td>\n",
       "      <td>0.547370</td>\n",
       "      <td>0.933731</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    LIMIT_BAL  partial_dependence  Percentile_0  Percentile_10  Percentile_20  \\\n",
       "0     10000.0            0.266888      0.009752       0.103610       0.114130   \n",
       "1     59500.0            0.243301      0.007765       0.095805       0.106769   \n",
       "2    109000.0            0.224759      0.004514       0.073701       0.089827   \n",
       "3    158500.0            0.216966      0.003510       0.061587       0.082731   \n",
       "4    208000.0            0.214594      0.003208       0.059036       0.081863   \n",
       "5    257500.0            0.209798      0.002925       0.054268       0.078228   \n",
       "6    307000.0            0.206901      0.002824       0.053263       0.075723   \n",
       "7    356500.0            0.198712      0.001872       0.046365       0.066366   \n",
       "8    406000.0            0.197883      0.001872       0.045775       0.064863   \n",
       "9    455500.0            0.197086      0.001872       0.044761       0.063219   \n",
       "10   505000.0            0.194449      0.001847       0.044276       0.062503   \n",
       "11   554500.0            0.194407      0.001847       0.044262       0.062484   \n",
       "12   604000.0            0.190247      0.001763       0.042238       0.059409   \n",
       "13   653500.0            0.190209      0.001763       0.042231       0.059384   \n",
       "14   703000.0            0.190188      0.001763       0.042211       0.059356   \n",
       "15   752500.0            0.190188      0.001763       0.042211       0.059356   \n",
       "16   802000.0            0.190188      0.001763       0.042211       0.059356   \n",
       "17   851500.0            0.190188      0.001763       0.042211       0.059356   \n",
       "18   901000.0            0.190188      0.001763       0.042211       0.059356   \n",
       "19   950500.0            0.190188      0.001763       0.042211       0.059356   \n",
       "\n",
       "    Percentile_30  Percentile_40  Percentile_50  Percentile_60  Percentile_70  \\\n",
       "0        0.161717       0.178196       0.176423       0.215932       0.237970   \n",
       "1        0.151972       0.155897       0.162622       0.177366       0.206651   \n",
       "2        0.122272       0.147910       0.129995       0.164410       0.186139   \n",
       "3        0.108702       0.139923       0.117246       0.158431       0.174685   \n",
       "4        0.106850       0.137178       0.115268       0.158413       0.171402   \n",
       "5        0.102988       0.134296       0.113019       0.155023       0.166766   \n",
       "6        0.100607       0.133915       0.109701       0.152706       0.162116   \n",
       "7        0.083248       0.128932       0.090932       0.150245       0.147120   \n",
       "8        0.081453       0.127613       0.090882       0.149558       0.146809   \n",
       "9        0.079312       0.126955       0.088818       0.149372       0.146495   \n",
       "10       0.078314       0.121430       0.087403       0.143454       0.143816   \n",
       "11       0.078040       0.121430       0.087377       0.143394       0.143775   \n",
       "12       0.074256       0.119003       0.083055       0.139884       0.137249   \n",
       "13       0.074229       0.119003       0.082968       0.139812       0.137186   \n",
       "14       0.074195       0.119003       0.082929       0.139812       0.137126   \n",
       "15       0.074195       0.119003       0.082929       0.139812       0.137126   \n",
       "16       0.074195       0.119003       0.082929       0.139812       0.137126   \n",
       "17       0.074195       0.119003       0.082929       0.139812       0.137126   \n",
       "18       0.074195       0.119003       0.082929       0.139812       0.137126   \n",
       "19       0.074195       0.119003       0.082929       0.139812       0.137126   \n",
       "\n",
       "    Percentile_80  Percentile_90  Percentile_99  \n",
       "0        0.482309       0.600873       0.963266  \n",
       "1        0.337691       0.589542       0.943703  \n",
       "2        0.330370       0.575241       0.939937  \n",
       "3        0.330370       0.571536       0.939715  \n",
       "4        0.330370       0.569508       0.938817  \n",
       "5        0.330130       0.559060       0.936782  \n",
       "6        0.330130       0.555402       0.935711  \n",
       "7        0.329356       0.552223       0.935394  \n",
       "8        0.324522       0.550167       0.934938  \n",
       "9        0.322438       0.550167       0.934894  \n",
       "10       0.314405       0.549231       0.934661  \n",
       "11       0.314405       0.549195       0.934661  \n",
       "12       0.307714       0.547538       0.933731  \n",
       "13       0.307588       0.547495       0.933731  \n",
       "14       0.307588       0.547370       0.933731  \n",
       "15       0.307588       0.547370       0.933731  \n",
       "16       0.307588       0.547370       0.933731  \n",
       "17       0.307588       0.547370       0.933731  \n",
       "18       0.307588       0.547370       0.933731  \n",
       "19       0.307588       0.547370       0.933731  "
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "par_dep_LIMIT_BAL"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5. Plotting partial dependence and ICE to validate and explain monotonic behavior\n",
    "\n",
    "Overlaying partial dependence onto ICE in a plot is a convenient way to validate and understand both global and local monotonic behavior. Plots of partial dependence curves overlayed onto ICE curves for several percentiles of predictions for `DEFAULT_NEXT_MONTH` are used to validate monotonic behavior, describe the GBM model mechanisms, and to compare the most extreme GBM behavior with the average GBM behavior in the test data. Partial dependence and ICE plots are displayed for the three most important variables in the GBM: `PAY_0`, `LIMIT_BAL`, and `BILL_AMT1`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "#### Function to plot partial dependence and ICE\n",
    "\n",
    "def plot_par_dep_ICE(xs, par_dep_frame):\n",
    "\n",
    "    \n",
    "    \"\"\" Plots ICE overlayed onto partial dependence for a single variable.\n",
    "    \n",
    "    Args: \n",
    "        xs: Name of variable for which to plot ICE and partial dependence.\n",
    "        par_dep_frame: Name of Pandas DataFrame containing ICE and partial\n",
    "                       dependence values.\n",
    "    \n",
    "    \"\"\"\n",
    "    \n",
    "    # initialize figure and axis\n",
    "    fig, ax = plt.subplots()\n",
    "    \n",
    "    # plot ICE curves\n",
    "    par_dep_frame.drop('partial_dependence', axis=1).plot(x=xs, \n",
    "                                                          colormap='gnuplot',\n",
    "                                                          ax=ax)\n",
    "\n",
    "    # overlay partial dependence, annotate plot\n",
    "    par_dep_frame.plot(title='Partial Dependence and ICE for ' + str(xs),\n",
    "                       x=xs, \n",
    "                       y='partial_dependence',\n",
    "                       style='r-', \n",
    "                       linewidth=3, \n",
    "                       ax=ax)\n",
    "\n",
    "    # add legend\n",
    "    _ = plt.legend(bbox_to_anchor=(1.05, 0),\n",
    "                   loc=3, \n",
    "                   borderaxespad=0.)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Partial dependence and ICE plot for `LIMIT_BAL`\n",
    "The monotonic prediction behavior displayed in the partial dependence, and ICE tables for `LIMIT_BAL` is also visible in this plot. Monotonic decreasing behavior is evident at every percentile of predictions for `DEFAULT_NEXT_MONTH`. Most percentiles of predictions show that sharper decreases in probability of default occur when `LIMIT_BAL` increases just slightly from its lowest values in the test set. However, for the custumers that are most likely to default according to the GBM model, no increase in `LIMIT_BAL` has a strong impact on probabilitiy of default. As mentioned previously, the displayed relationship between credit balance limits and probablility of default is not uncommon in credit lending. As can be seen from the displayed histogram, above ~$NT 500,000 prediction behavior may have been learned from extremely small samples of data. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f06a84089b0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_par_dep_ICE('LIMIT_BAL', par_dep_LIMIT_BAL) # plot partial dependence and ICE for LIMIT_BAL"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f06a8449198>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "_ = train['LIMIT_BAL'].plot(kind='hist', bins=20, title='Histogram: LIMIT_BAL')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Partial dependence and ICE plot for `PAY_0`\n",
    "Monotonic increasing prediction behavior for `PAY_0` is displayed for all percentiles of model predictions. Predition behavior is different at different deciles, but not abnormal or vastly different from the average prediction behavior represented by the red partial dependence curve. The largest jump in predicted probability appears to occur at `PAY_0 = 2`, or when a customer becomes two months late on their most recent payment. Above `PAY_0 = 3` there are few examples from which the model could learn."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgsAAAEXCAYAAAAjowezAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzs3Xtc0/e9P/DXJyEhRC4SY0BRQLmIYKSKls7ZhdXawuzlVGdvdtP2zHo2rZee47rTH7aW9biebah1U3Tr2lXH6dZZtY7jpdpTw6mnZUUnKZcEg1yUylXuSUhCPr8/vkEjcgkSCOj7+Xjk0fi9vvNNyvf9/Xw/38+bcc5BCCGEENIXkbcDIIQQQsjoRskCIYQQQvpFyQIhhBBC+kXJAiGEEEL6RckCIYQQQvpFyQIhhBBC+kXJwhjDGHuVMfaOm8v+kTH25nDHNBIYYxWMsQe9HcdwYIytYox97qV9z2CMXWCMtTHG1nsjBkLI6EfJgoc5T2pmxlg7Y6zWecL2v81tpTDGrrhO45xv45z/yANxrmKMdTnjbGeMlTPG3mOMxQ5128RzGGORjDHOGPNxmXYvY+wYY6yZMXaNMfZ3xtjzznkpjDGHy/fa/fpWH7v4KYDPOOcBnPNdHoh3K2PM5txnM2Ps/3ru2xkjZ4y94jLNjzF2kTG2sseyrzHGzjLG+vxbxRjzZYy9yxhrZYzVMMZeHurnIITcjJKF4fEo59wfwFwA8wCkD3YDrieHYfSFM84gAA8CMAM4xxibNQL7JrfBeeL9HwBaANEAJgD4MYA0l8W+4Zz793h90ccmIwAU3WYsff1G/+L8XU0E8DmAQ4wx5jJ/JYBrAH7YPYFzbgbwzwB+zRgLcW5/JoB/BfDPnHNHP6FsBRDj/CzfBfBTxljq7XwmQkjvKFkYRpzzagDHAcwCAMbY84yxEmeT7yXG2JruZbtbERhjrzDGagB84Fx3ssvV4WTnldufXNb7q/NqqoUxlssYS7iNOLs452Wc859AOAltddn+fc6rw2bGWAFjLMVl3hnG2C+cV7atjLGPGWOKQaz7c+dVYxtj7BPGmNJl/g8YY5WMsUbG2P9zjZcxJmKM/YwxVuac/2H3fl2uxFcyxqoYYw2u6zPGxEy4lVPm3O85xthU57w4xtgp59W6gTH2ZF/HzM3v8l8ZY3WMsavdV/7O+RMYY0edx+zvAKLc/a4A/ArA+5zz/+ScN3DBOc55n7H28xn+B8LJ9bfO31csYyyIMbafMVbvPP7p3Vf1TGiNOssY28EYa4TL76Q3nHMbgPcBhEJIasAYGwfg+wDWAohhjM1zWT4XwIfOeBiAdwD8gnOuH+CjrATwc855E+e8BMDvAawa5OEghPSDkoVh5DwJfQ/AP5yT6gA8AiAQwPMAdjDG5rqsEgpAAeEK6YcQrhZdrxK/6WU3xyFcVakAnAeQPcSwDwG43xl/GID/BvCmM65/A/ARY2yiy/I/BPACgEkA7AB2DWLdZyEcBxUAqXMZMMbiAWQB+AGAyRBONFNc1nsJwD8B0DjnNwHY3eNzLAQwA8AiAK85r1IB4GUAz0D4XgKdsZucJ7FTAP7LGc/TAPY4Y+mNO99lEIAwCFfMuxljwc55uwFYnMfsBedrQIwxOYBvATjozvID4Zw/AOB/Aaxz/r5KAfzGGfd0CMf3hxA+X7dkAJcAhAD4jwHi9YVw0r7MOW9wTl4KoB3AXwGchHCid/UKgPkAPgLgCyE56m8fwRCOY4HL5AIAg06aCSH94JzTy4MvABUQ/hg2A6gEsAeAXx/LHgGwwfk+BYAVgMxlfgqAKz3W2QrgT31sbzwADiDI+e8/Anizj2VXAfi8l+mpAGzO968AONBj/kkAK53vzwB4y2VevPMziN1cN91l3k8AnHC+fw3An13mjXNu90Hnv0sALHKZPwmADYAPgEjnMZjiMv/vAJ52vjcAeLyXz/0UgP/tMW0fgNfd/N57fpdmAD4u8+sA3Oc8NjYAcS7ztvX2XTjndX8eHwiJB3ddt5flUwA4nL8/19e4PpY/A+BHzvdi53GOd5m/BsAZl99M1QDHYatzG83Oz/w/AJJc5p8GsNP5/hkA9QAkPbaxxPk5E9047lOdy7r+f7MYQMXt/P9LL3rRq/cXtSwMj3/inI/nnEdwzn/ChfuxYIylMca+dDZzN0O4ulW6rFfPObe4uxNnk/pbzib1VgiJCnpsc7DCINxPBoQWjuXO2wjNzpgXQjg5d7vs8r4SgMS5f3fWrXF5bwLQ3RF0sut2OecdABpdlo0AcNhluyUAuiBc7Q607akAynr53BEAknvEuwJCC8Et3PguGznn9l5imAjhxN/zuLmjCUIiMGmA5b5x/v5cXx1ubF8J4ftzjacSwm+i22UM7EPnPlWc8wc45+eA6y1t38WN1q+PAcggJAeuinr8tz/tzv8GukwLBNDmxrqEEDdRsjBCnE2yHwH4NYAQzvl4AMcAuHb86lkCdKCSoM8CeBxC58QgCFeh6LHNwXoCQtM0IJwYDvQ46YzjnL/lsvxUl/fhEK6aG9xcty9XXbfrbH6f4DL/MoC0HtuWcaGPyEAuo/c+ApcBaHts059z/uOeC7r5XfalHsLtmp7HbUCccxOALwAsc2f529AA4fuLcJkWDsD1uA6lTO0PIPzN+RsT+uVcgpAs9LwV4TbOeROE30uiy+RE3GanTUJI7yhZGDlSCPdg6wHYGWNpAB4aYJ1aABMYY0F9zA8A0AnhqlsOoTl70JwtFNMYY7+B0Iz9hnPWnwA8yhh72LmMzNl5z7X/wHOMsXjnCT0DwEHOeZeb6/blIIBHGGMLGWNS53Zdf6t7AfwHYyzCGf9Extjjbn7cdwD8nDEWwwSzGWMTAOQAiGVCx0qJ8zXfpa+Dq9v5LgEInUkh9AvZyhiTO/tEDOZk+VMAqxhjm51xgzGWyBj78yC20V9sH0I4tgHO4/syhO/SE1ZC+G3d4/JaBuB73Z/lNu0HkM4YC2aMxQFYDeEWHCHEQyhZGCGc8zYA6yH8MW6C0CpwdIB19BCeirjkbBqf3GOR/RCaiasBFAP4cpBhfYsx1g6gFcK960AA8znnXzv3fxlCy8WrEE6MlwFsxs2/mwMQ/jDXQLhKXD+IdXvFOS+C0Fv+vyBcNTYBcB1v4m0Ix+4Txlib83Mnu/mZt0P4Dj5xfu4/QOhT0gbhhP80gG+cn+c/ISQFPeMb9HfZwzoItyRqIBy799xdkXP+fwAecL4uMcauAfgdhJaNbq5P0HS/3G2NeAlAB4Sr/s8hfAfvuhtfXxhj90FosdjNOa9xeR0FYITQf+F2vQ7h1lIlhKd5fsU5PzHUmAkhNzDOh9KqSO5mjLEzEDpbujWiJCGEkLGJWhYIIYQQ0q+RGCWQEEKGxHm7rDdpnPP/7WMeIcRD6DYEIYQQQvpFtyEIIYQQ0q8Bb0Mwxt6FMKxtHef8lgJDzjHc34YwKI0JwCrO+fmBtqtUKnlkZOSgAyaEkLvZuXPnGjjnEwdekhDPcafPwh8B/BbCY3q9SYNQmyAGwuNrWXDjMbbIyEjk5+e7FyUhhBAAAGPM3RE/CfEYd555z8WN4X978ziA/VzwJYDxjLGBhqMlhBBCyBjhiT4LYbh5vPgruHks+esYYy8yxvIZY/n19fUe2DUhhBBChtuIdnDknP+Ocz6Pcz5v4kS65UYIIYSMBZ5IFqpxc1GcKbi58AwhhBBCxjBPJAtHAfzQWZTnPgAtnPOrHtguIYQQQkYBdx6d/ABCJUIlY+wKhKItEgDgnO+FUMDmexCKwZgAPD9cwRJCCCFk5A2YLHDO+60Gx4UhINd6LCJCCCGEjCpUG4J4QQUA8xDW5wDsg3zZXN53DWHfhHjCdwDcMsYdIaMWJQtkhKUD+A9vB0GIl2WBkgUyllCyQEbQLyEkCj+E0M1lKCQQfr6DfUkg9OtlQ9w/IUMR4O0ACBkUShbICNkL4BUAzwJ4F4DYu+EQQghxG1WdJCPgvwD8BMCjEEqNUKJACCFjCSULZJgdhXDbIQXAh3A+dUsIIWQMoWSBDKNPATwJYB6AjwHIvBsOIYSQ20LJAhkmX0IoSBoLYdwu6tBFCCFjFSULZBjoAKQBmATgEwAK74ZDCCFkSChZIB5WCuAhAP4ATgMI9W44hBBChoySBeJBVQAeBOCAkChEeDccQgghHkHjLBAPqYWQKLQCOANghlejIYQQ4jmULBAPaIJw66EawCkA93g3HEIIIR5FyQIZonYIQzfrAeQAWODdcAghhHgcJQtkCCwA/gnAVwD+CmCxd8MhhBAyLChZILfJBuBpCAMvvQ/gCe+GQwhx27lz51Q+Pj7vQCh9SR3dCSD0TC+02+0/SkpKqus5k5IFchscAF6AMCrjbyEM50wIGSt8fHzeCQ0NnTlx4sQmkUjEvR0P8T6Hw8Hq6+vja2pq3gHwWM/5lCzcdTiERxw7h7CNnQD+BKHc9FpPBEUIGVmzKFEgrkQiEZ84cWJLTU3NrN7mU7JwV7ECWAOh8uNQ/RTAv3tgO4QQLxBRokB6cv4mer0tRcnCXaMJwDIAnwH4NwBzhrCtCRAelWQeiIsQQshoR8nCXeEShMcbyyHcPljh3XAIIYSMKdQL9o73fwCSAdRDGIKZEgVCiPeJxeKkuLi4+JiYmIS0tLTpbW1tXjkfZWRkqFz3rdFoohsaGsQAIJfLb6sJ9uDBg4GRkZGzwsPDZ7366qt3RIEcShbuaH8B8ACA8RBKRt/v3XAIIcTJ19fXodfriy9evFgkkUh4ZmbmRHfXtdvtHotj3759Ie3t7dfPhVqt1qhUKrtud3t2ux2bNm0KP3bsWGlpaWnRRx99pDh37pzMM9F6D92GuCNxAL8A8P8gJAiHIfQzIISQm73wwgtTCwsL5Z7c5qxZs0zvvvvuZXeXX7hwYbtOp/MDgD179iiysrJCbDYbmzt3bsf+/fsrfXx8IJfL56xYsaI+Nzc3cNeuXVUymcyxcePGcJPJJJJKpTw3N9cQEBDgWLt27ZSzZ88GWK1Wtnr16rrNmzc35OTkBGRkZExWKBQ2g8Hgp1arTUeOHCnftm2bqq6uTqLRaGKDg4PteXl5pWFhYer8/PySSZMm3ZSRbNmyJeTw4cMKq9XKlixZ0rxjx45vevssZ86cGRcREdEZHx9vBYClS5deO3jw4PikpKSaoRxTb6OWhTuOFcIYCP8Pwi2HU6BEgRAyWtlsNpw8eTJQrVabz58/Lzt48KAiPz9fr9fri0UiEd+7d+8EADCbzaLk5OQOg8FQrNFoOlasWBG1c+fOKoPBUKzVag3+/v6OnTt3KoOCgroKCwtLCgoKSt5///2Jer1eCgAlJSV+u3fvvmw0Gouqqqp8T5065Z+enl6nUqlsWq22NC8vr7SvGA8dOhRoNBplOp2upKSkpPjChQvy48eP+/e27OXLl6VhYWHW7n9PmTLFWl1dLfX0cRtp1LJwR3F94mErgNdATywQQvozmBYAT+rs7BTFxcXFA0BycnLbhg0bGrZv364sLCyUJyYmzgQAi8UiUqlUdgAQi8VYtWpVEwDodDqZSqWyaTQaEwAoFAoHAJw+fTpQr9fLjx49GgwAbW1t4uLiYplUKuVqtbojKirKBgAJCQmmsrIyt0/gJ06cCMzNzQ2Mj4+PBwCTySTS6/WytLS0ds8dkdGNkoU7xiUASwCUATgA4DnvhkMIIf3o7rPgOo1zzpYvX964e/fu6p7LS6VSh49P/6cszjnLzMysWrZsWavr9JycnABfX9/r40qIxWLY7Xa3r6Q459i4cePVzZs3Nwy07NSpU29qSbhy5cpNLQ1jFd2GuCN8AeA+AHUQnnigRIEQMvakpqa25uTkBFdXV/sAQG1trbi0tPSWFoDZs2db6urqJFqtVg4ATU1NIpvNhsWLF7dkZWVN7OzsZACg0+l8W1tb+z3PjRs3rqulpaXfZdLS0loPHDig7F6uvLxc0h1jTxqNpqOiokKm1+ulFouFHTp0SLFs2bJm947A6EUtC2PeXwCsBDAVwH8DiPVuOIQQcpuSkpIs6enp1YsWLYp1OByQSCR8165dVbGxsTddmctkMp6dnV22fv36cIvFIpLJZI7c3NzSTZs2NVRUVPiq1eqZnHOmUChsx44dK+tvnytXrmxITU2NDQkJsfbVb2Hp0qWtRUVFsvnz58cBgFwud2RnZ5eHhYXd8liGRCJBZmZmVWpqamxXVxeeffbZhnnz5lmGclxGA8a5d0b8nDdvHs/Pz/fKvu8Mrk88LITwxIPSqxERQoYfY+wc53zeULZRUFBQkZiYOGCTOrn7FBQUKBMTEyN7TqeWhTHJCuBfALwH4YmHPwDw9WpEhBBC7lyULAw7E4BGAA3OVyOAod6++hDCEw+vO1/0xAMhhIykmpoacUpKyoye08+cOWMIDQ297UGdRiu3kgXGWCqAtwGIAbzDOX+rx/xwAO9DGCpQDOBnnPNjHo7VQzoBGCE0498uG25NABr6+Ld5KMH2wRfAfgA/GIZtE0IIGUhoaGhXz6c57mQDJguMMTGA3QAWA7gC4CvG2FHOuetBSgfwIec8izEWD+AYgMhhiPc2cAAGAJ84X2cAdAzDfoIh9BmYACAMQKLzvdLl1f3vIAztQRR/54sQQggZfu60LNwLwMg5vwQAjLE/A3gcgGuywAEEOt8HAeh1GMyR0wThEcLuBKHKOT0GwCoA38LQ7vH74MaJfwIABeiODiGEkDuVO2e4MACuI3xdgVDG0NVWAJ8wxl4CMA7Ag71tiDH2IoAXASA8PHywsfbDDiAPQmJwEsBXABwQ8pZFAF4F8BCAaR7cJyGEEHJ38NTl8DMA/sg5z2SMfQvAAcbYLM65w3UhzvnvAPwOEB6dHNouL+FGy8GnAFohNO3fC2ALhOTgXtAVPyGEEDI07tw4r4Yw4k+3Kc5prv4ZQhd9cM6/ACDDsD30/ycItxOiAPwYwDkATwE4CKFD4RcQGjoWgBIFQggZncRicVJcXFx8TExMQlpa2vS2tjavjCickZGhct23RqOJbmhoEAOAXC6fczvbXL58eaRCoUiMiYlJcJ1eW1srXrBgQUxERMSsBQsWxNTX14uHFv3IGXBQJsaYD4BSCO351RDa+J/lnBe5LHMcwF84539kjM2EcKkfxvvZ+O0PynQYwLsQWg4ehpA40KODhJC7g6cHZfrNC59OrSps9GiJ6vBZE0wvvbuo3wJVcrl8jslk+gcAPPbYY9Pmzp1r2rp1a60727fb7RioToS7+ipJ3TPGwTh+/Lh/QECA4/nnn5928eLF6+fKf/mXf5miUCjs27Ztq3n11VdDm5qaxFlZWbfUwfCmvgZlGjCT45zbAayD0BmgBMJTD0WMsQzG2GPOxf4VwGrGWAGADwCs6i9RGJonAPwNwEsQhjamRIEQQsayhQsXthuNRl8A2LNnj0KtVs+Mi4uLf/bZZyPsduEcLpfL56xevXrKjBkz4j/99FN/rVYrnzNnTtyMGTPi1Wr1zKamJpHdbseaNWumzJo1a2ZsbGz8r371KyUgFJK69957Z6Smpk6fNm1awmOPPTbN4XDgzTffVNXV1Uk0Gk1scnJyLCAkD1evXr0lE9myZUtI93Y3bdo0ub/Pk5aW1j5x4sRbko8TJ06MX7NmTSMArFmzpvH48ePBQz54I8St1Mw5ZsKxHtNec3lfDODbng2NEELIcBuoBWC42Ww2nDx5MvChhx5qPX/+vOzgwYOK/Px8va+vL3/uuefC9+7dO2HdunWNZrNZlJyc3PH73//+isViYdHR0bOys7PLNBqN6dq1ayJ/f3/Hzp07lUFBQV2FhYUlZrOZzZ8/P+7RRx9tBYCSkhK/CxcuXIqMjLQlJSXFnTp1yj89Pb0uKysrRKvVlvbWstDt0KFDgUajUabT6Uo453jwwQejjx8/7j/YEtWNjY0+ERERNgCYOnWqrbGxcczcKx8zgRJCCLlzdHZ2iuLi4uIBIDk5uW3Dhg0N27dvVxYWFsoTExNnAoDFYhGpVCo7IJSVXrVqVRMA6HQ6mUqlsmk0GhMAKBQKBwCcPn06UK/Xy48ePRoMAG1tbeLi4mKZVCrlarW6IyoqygYACQkJprKysluqWfblxIkTgbm5uYHx8fHxAGAymUR6vV422GTBlUgkAmNjp2WckgVCCCEjztfX19FzBETOOVu+fHnj7t27b7mPL5VKHQP1U+Ccs8zMzKply5a1uk7PyckJ8PX1vX5rXCwWw263u32m5pxj48aNVzdv3jyk4lsTJkywV1ZWSiIiImyVlZUShULRZ2vGaOOV3qeEEEJIT6mpqa05OTnB1dXVPoDw9EBpaektLQCzZ8+21NXVSbRarRwAmpqaRDabDYsXL27Jysqa2NnZyQBAp9P5tra29nueGzduXFdLS0u/y6SlpbUeOHBA2b1ceXm5pDvGwXj44Yeb9+3bNwEA9u3bNyE1NXWohYJGDLUsEEIIGRWSkpIs6enp1YsWLYp1OByQSCR8165dVbGxsVbX5WQyGc/Ozi5bv359uMViEclkMkdubm7ppk2bGioqKnzVavVMzjlTKBS2Y8eOlfW3z5UrVzakpqbGhoSEWPPy8kp7W2bp0qWtRUVFsvnz58cBgFwud2RnZ5eHhYX12jLw6KOPTvvyyy8DmpqafEJCQmb/7Gc/+2bTpk0Nb7zxxtUnnngiKiIiQhkWFmY9fPhwv7GNJgM+Ojlcbv/RSUIIuXt5+tFJQlzd9qOThBBCCLm70W0IQgghZJBqamrEKSkpM3pOP3PmjCE0NLTLGzENJ0oWCCGEkEEKDQ3t6vk0x52MbkMQQgghpF+ULBBCCCGkX5QsEEIIIaRflCwQQggZcXdqiWqj0ShJTk6OjYqKSoiOjk74+c9/ruqeN5ZLVFOyQAghZMR1D/d88eLFIolEwjMzMye6u253JUpP2LdvX0h7e/v1c6FWqzUqlcrbfppBIpEgMzPzSllZWdFXX31V8oc//EF17tw5GQC8/vrrk1JSUtoqKysLU1JS2l577bVQT3yGkUBPQxBCyF3sz/9smVpT5JB7cpuhCSLT03+QuV3NcuHChe06nc4PEEpUZ2VlhdhsNjZ37tyO/fv3V/r4+EAul89ZsWJFfW5ubuCuXbuqZDKZY+PGjeEmk0kklUp5bm6uISAgwLF27dopZ8+eDbBarWz16tV1mzdvbsjJyQnIyMiYrFAobAaDwU+tVpuOHDlSvm3btuslqoODg+15eXmlYWFh6vz8/JKeVSi3bNkScvjwYYXVamVLlixp3rFjxze9fZaIiAhbd2XJ4OBgR1RUlLmqqkqalJRkOXHixHitVmsAhBLVGo1mBoBb6mCMRpQskBHVZW5D08nfgtss3g6FEK/xn/sI/KLmezuMUeFOLlFtMBikxcXFco1G0w5QiWpC3Nb6f39G/V9e9XYYhHiVz/hJoyZZGEwLgCfd6SWqW1paREuXLo166623LnfH54pKVBPSD7PxS4gDlIjZVzem/kchhHjWnVyiurOzky1ZsiRq+fLl11auXHm9siSVqCbETRZjHmRR91KiQAi5xZ1QotrhcODpp5+OiI2NtWzdurXWdR6VqCbEDV2mVnRWFyPgvie9HQohZBS6E0pUnzp1yv/IkSMTYmJizN23Wd54443qp556qoVKVN8GKlF99+ko/B9U/cciTP3ZCfgnPuztcAgZk6hENRlOVKKaeJ3ZmAcA8Iu618uREEIIGQy6DUFGjLksD9JJsRD7B3s7FEIIGRIqUU3IMOCcw2zMg796sbdDIYSQIaMS1YQMA3vjZXQ110AWneztUAghhAwSJQtkRNzor0DJAiGEjDWULJARYTbmgUl8IYuY7e1QCCGEDBL1WSAjwmz8ErJpSeAO4Orf/gxHJ9WGIHev8XO+Bf+oW/rGETJqUbJAhh2322C5dA7Bi3+Mq8f+ioJNz3k7JEK8KuHNrLs+WRCLxUkxMTHmrq4uFh0dbf7www8rAgICbqmhMNwyMjJUmzZtaujet0ajif7oo4/KlUpll1wun2Mymf4xmO2ZTCaWnJwcZ7VaWVdXF3v00UebuitU6vV66ZNPPjm9ubnZR61Wmz766KNymUzmncGOBomSBTLsLJe/BrdZ4BedjMsnz0IsH4f7T3wN0JDP5C4lHT/B2yF4nWttiMcee2xaZmbmxJ7DI/fFbrdjoDoR7tq3b1/I6tWrr3UnC1qt1jiU7clkMv75558bgoKCHJ2dnWz+/PkzPv3005ZFixZ1vPzyy1PWrVtX++KLLzY9++yz4W+//bbylVdeqffIBxlmlCyQYWdxdm6URSej5ddvIzBhLuRTp3k5KkIIAJx40TK1odgh9+Q2lfEiU+rv3K9muXDhwnadTucHAHv27FFkZWWF2Gw2Nnfu3I79+/dX+vj4QC6Xz1mxYkV9bm5u4K5du6pkMplj48aN4SaTSSSVSnlubq4hICDAsXbt2ilnz54NsFqtbPXq1XWbN29uyMnJCcjIyJisUChsBoPBT61Wm44cOVK+bds2VV1dnUSj0cQGBwfb8/LySsPCwtT5+fklPUtWb9myJeTw4cMKq9XKlixZ0tzdWtCTSCRCUFCQAwCsViuz2+2MMQaHw4Evvvgi4OOPP74EAC+88ELj1q1bJ4+VZIE6OJJhZzbmQRyognh8GFqL/oGg2UMaqZYQcgex2Ww4efJkoFqtNp8/f1528OBBRX5+vl6v1xeLRCK+d+/eCQBgNptFycnJHQaDoVij0XSsWLEiaufOnVUGg6FYq9Ua/P39HTt37lQGBQV1FRYWlhQUFJS8//77E/V6vRQASkpK/Hbv3n3ZaDQWVVVV+Z46dco/PT29TqVS2bRabWlfdSEA4NChQ4FGo1Gm0+lKSkpKii9cuCA/fvy4f1/L2+12xMXFxYeEhCRqNJrWBx54oKO2ttYnICCgSyKRAAAiIyOttbW1bpfJ9jZqWSDDzmzMg190MjqMJXB0WhCkpmSBkNFiMC0AntTZ2SnqLrSUnJzctmHDhobt27crCwsL5YmJiTMBwGKxiFQqlR0QykqvWrWqCQB0Op1MpVLZNBqNCQAUCoUDAE6fPh2o1+vlR48eDQaAtrY2cXFxsUwqlXLG3HCLAAAgAElEQVS1Wt0RFRVlA4CEhARTWVmZ2yfqEydOBObm5gbGx8fHA4DJZBLp9XpZWlpae2/L+/j4QK/XFzc0NIiXLFkS9dVXX8mmTJkyZspR98atZIExlgrgbQBiAO9wzt/qZZknAWwFwAEUcM6f9WCcZIzq6miG9Rs9ghY+h5avhcJhlCwQQlz7LHTjnLPly5c37t69u7rn8lKp1DFQPwXOOcvMzKxatmxZq+v0nJycAF9f3+sdCcViMex2u9udpjjn2Lhx49XNmzcPqviWUqnsuv/++9v+9re/BW3durW2ra1NbLPZIJFIUFFRIQ0JCbEOvJXRYcDbEIwxMYDdANIAxAN4hjEW32OZGAD/DuDbnPMEABuHIVYyBpnLvgIA+EUno+XrfPgEBGJcZLSXoyKEjEapqamtOTk5wdXV1T4AUFtbKy4tLb2lBWD27NmWuro6iVarlQNAU1OTyGazYfHixS1ZWVkTOzs7GQDodDrf1tbWfs9z48aN62ppael3mbS0tNYDBw4ou5crLy+XdMfY0zfffOPT0NAgBoD29nb22WefBc6cOdMiEolw3333tb333nvBAPDuu+9OeOSRR5oHPiqjgzstC/cCMHLOLwEAY+zPAB4H4JoRrgawm3PeBACc8zpPB0rGJosxD2AMsqj5aNG9iqBZSWAi6ipDCLlVUlKSJT09vXrRokWxDocDEomE79q1qyo2NvamK3CZTMazs7PL1q9fH26xWEQymcyRm5tbumnTpoaKigpftVo9k3POFAqF7dixY2X97XPlypUNqampsSEhIda++i0sXbq0taioSDZ//vw4AJDL5Y7s7OzysLCwW24tXL58WbJq1appXV1d4Jyzxx9//NozzzzTAgCZmZlXnnrqqag333wzLCEhwbRhw4YxUyaccd7/I56Mse8DSOWc/8j57x8ASOacr3NZ5giAUgDfhnCrYivn/EQv23oRwIsAEB4enlRZWempz0FGqcu/ehTW2jJM23YBn6gDEfXiKkxZ3AjuGMqgTL38Zvv8HY+JR5jJXUY6dR18lN+7rXUZY+c450O6l1dQUFCRmJg4Zk5UZOQUFBQoExMTI3tO91QHRx8AMQBSAEwBkMsYU3POb2pi4Zz/DsDvAGDevHn0V/wOd73S5JwlaLtYBIe1E8HxJtjrDkIUMAfAUMZZ6GXdPsdtoPEcyOjCu8zeDoGQQXEnWagGMNXl31Oc01xdAZDHObcBKGeMlUJIHr7ySJRkTLLVlaOrtR5+Uclo0QmdG32D68G6pmFc8nkvR0cIIbevpqZGnJKScsswnGfOnDGEhoZ2eSOm4eROsvAVgBjG2DQIScLTAHo+6XAEwDMA3mOMKQHEArjkyUDJ2HO90mTMfbjyWRYkQePBrAUQKx7wcmSEEDI0oaGhXT2f5riTDdjTjHNuB7AOwEkAJQA+5JwXMcYyGGOPORc7CaCRMVYM4DMAmznnjcMVNBkbzMY8MF85fKfOQsvX+Zhw3yxw61WIg77l7dAIIYQMglt9FjjnxwAc6zHtNZf3HMDLzhchAABLWR5k05LgsNvRZvga4Y+nAQDEQQu8HBkhhJDBoBEcybDgdissFf9A8MMvoU3/NbjNBv9wGyCSo+IP74B3jZmxSAjxuID5zyJE811vh0GI2yhZIMPCUlkAbuuEX3QympwjN0rkl2H/KhiqQ3vQZfbz/E77e76Gnr0ho4jj4zLgrzOB0FBvh0KIWyhZIMPieufG6GRUHNoKWagSaClG4OuAuA0A6NExcjf7DGhuvquTBbFYnBQTE2Pu6upi0dHR5g8//LCiu0z0SMrIyFBt2rSpoXvfGo0m+qOPPipXKpVdcrl8jslk+sftbNdut0OtVseHhoZaP/vsMyMA6PV66ZNPPjm9ubnZR61Wmz766KNymUw2Ji5laCg9MizMxjz4jJ8EH8UUtOjyEfKdaRDrHBC3jfjfAkLIKNRdG+LixYtFEomEZ2ZmTnR3XbvdczWZ9u3bF9Le3n79XKjVao1KpXLIjz6++eabIdHR0TddFb388stT1q1bV1tVVVUYFBRkf/vtt5VD3c9IoZYFMiwsxjzIopPhsJjRfrEI05+9Hz45LgssXgx87/ZGsANw8wBMfb0faB4h3hQS4u0IAABn1302tbnkmtyT2xw/U2H69m+/63Y1y4ULF7brdDo/ANizZ48iKysrxGazsblz53bs37+/0sfHB3K5fM6KFSvqc3NzA3ft2lUlk8kcGzduDDeZTCKpVMpzc3MNAQEBjrVr1045e/ZsgNVqZatXr67bvHlzQ05OTkBGRsZkhUJhMxgMfmq12nTkyJHybdu2qerq6iQajSY2ODjYnpeXVxoWFqbOz88vmTRp0k0ZyZYtW0IOHz6ssFqtbMmSJc07duz4pq/PU1ZWJjl58mTQv//7v1/dsWNHCAA4HA588cUXAR9//PElAHjhhRcat27dOvmVV16pv72jPLIoWSAe19V+DdaaiwhKeQGtJQXgXV0YF9oO0TmG650HXnoJePRRr8ZJCPE+m82GkydPBj700EOt58+flx08eFCRn5+v9/X15c8991z43r17J6xbt67RbDaLkpOTO37/+99fsVgsLDo6elZ2dnaZRqMxXbt2TeTv7+/YuXOnMigoqKuwsLDEbDaz+fPnxz366KOtAFBSUuJ34cKFS5GRkbakpKS4U6dO+aenp9dlZWWFaLXa0p7JgatDhw4FGo1GmU6nK+Gc48EHH4w+fvy4f18lqteuXTv1l7/85ZWWlhZx97Ta2lqfgICALolEAgCIjIy01tbWul0m29soWSAeZzb+HYDQX6H+K6Fzo0+7AeJLQqLgEImRe/5b6Cq+zSciuLMURI//Cu/5jTIRfSxHiLfNetwHEcnigRccAYNpAfCkzs5OUVxcXDwAJCcnt23YsKFh+/btysLCQnliYuJMALBYLCKVSmUHhLLSq1atagIAnU4nU6lUNo1GYwIAhULhAIDTp08H6vV6+dGjR4MBoK2tTVxcXCyTSqVcrVZ3REVF2QAgISHBVFZW5vaJ+sSJE4G5ubmB8fHx8QBgMplEer1e1luy8MEHHwQplUr7/fffb8rJyQkYyjEaTShZIB5nNn4pVJqcPg8t7/4RQTOVEJ9vAHOeqKscSfhbhgzACDw+6dwpY7heIoLuRhBvE8nNiEge7+0wvKq7z4LrNM45W758eePu3bt7lhSAVCp1+Pj0f8rinLPMzMyqZcuWtbpOz8nJCfD19b1+qSAWi2G3293+S8A5x8aNG69u3rx5wOJbn3/+uf+pU6fGh4WFBXV2doo6OjpEjz/++LTDhw+Xt7W1iW02GyQSCSoqKqQhISFj5hlyShaIx5mNefCdkgCxXwBavs5H6HfCIP7yxv9jBtyPcseBIe2Dw6X5wGUqIWPBImUKgLs7WehNampq69KlS6NfffXV2rCwMHttba24paVF3LNE9ezZsy11dXUSrVYr12g0pqamJpG/v79j8eLFLVlZWRMfeeSRNl9fX67T6XwjIyNt/e1z3LhxXS0tLaJJkyb1uUxaWlrr1q1bJ7/44ovXgoKCHOXl5RKpVMp7K1G9e/fu6u5kJycnJyAzMzPk448/LgeA++67r+29994LfvHFF5vefffdCY888khzz/VHK0oWiEdxzmEp+zv85z8Be0c72o0lCPqRGj57bixTLLoHv8xbDDaUS3wGMMacLQbCf29+z3pZzuU9IV4UOHEYxhm5AyQlJVnS09OrFy1aFOtwOCCRSPiuXbuqeiYLMpmMZ2dnl61fvz7cYrGIZDKZIzc3t3TTpk0NFRUVvmq1eibnnCkUCtuxY8fK+tvnypUrG1JTU2NDQkKseXl5pb0ts3Tp0taioiLZ/Pnz4wBALpc7srOzy3tLFvqTmZl55amnnop68803wxISEkwbNmwYM2XCGffSTdx58+bx/Px8r+ybDB/r1YsoezkWoat/D+4/A18+9R0s3DoegauEBNoKOV4L+wxvXbnXy5ESMjYxxs5xzucNZRsFBQUViYmJY+ZERUZOQUGBMjExMbLndBpngXiU62BMLV/nQ+wHSHU3WtouYQFC5vh6KzxCCCG3gW5DEI8yG/MgkvnDd0o8Wr5+C8p7FRD/49r1+RdZCmY+RE2whJCxraamRpySkjKj5/QzZ84YQkNDhzyo02hDyQLxKHNZHmTT54GJxGjR5WP6Ml+IP74xv4Tfi2cWjZlBywghpFehoaFdPZ/muJPRbQjiMQ6rBZaKC/CLToattQUd5aUItDZD5LwLYYIClT6hmDyDeoETQshYQskC8ZjOygtAlw2y6GS0Fp0HEwO++htDoxuhgX+4FWIx/ewIIWQsob/axGOud26MSkaLLh/KewCfghvzDSwFU+bRc4uEEDLWULJAPMZszIOPYgokislo+TofqiQpxLob80v5d5DwsL/3AiSEEHJbKFkgHmM2fgm/6GQAQEvhVxhvsYE570I0i8NxFcGYsdDtKrSEkDuYWCxOiouLi4+JiUlIS0ub3tbW5pXzUUZGhsp13xqNJrqhoUEMAHK5fM7tbDMsLEwdGxsbHxcXFz9r1qyZ3dNra2vFCxYsiImIiJi1YMGCmPr6+tFRIMQNlCwQj7C31sNWVw6/6GRYm6+BdZbD13hjwC8jNOiSNmFSNHVuJITcqA1x8eLFIolEwjMzM92+krDbBzVwYr/27dsX0t7efv1cqNVqjUqlcsiPPmq12lK9Xl9cWFhY0j3t9ddfn5SSktJWWVlZmJKS0vbaa6+FDnU/I4UenSQecfNgTOegiAN8zt2Yb3A8gPHRVohE1GeBkNFE99MXprYZCuWe3GbAjFmm2b981+1qlgsXLmzX6XR+ALBnzx5FVlZWiM1mY3Pnzu3Yv39/pY+PD+Ry+ZwVK1bU5+bmBu7atatKJpM5Nm7cGG4ymURSqZTn5uYaAgICHGvXrp1y9uzZAKvVylavXl23efPmhpycnICMjIzJCoXCZjAY/NRqtenIkSPl27ZtU9XV1Uk0Gk1scHCwPS8vrzQsLEydn59f0rNk9ZYtW0IOHz6ssFqtbMmSJc07duz4ZrDH5cSJE+O1Wq0BANasWdOo0WhmALilaNZoRC0LxCPMxjxAJIZsWhJadH/HhBhA7PIEcik0CL9vzLS4EUJGiM1mw8mTJwPVarX5/PnzsoMHDyry8/P1er2+WCQS8b17904AALPZLEpOTu4wGAzFGo2mY8WKFVE7d+6sMhgMxVqt1uDv7+/YuXOnMigoqKuwsLCkoKCg5P3335+o1+ulAFBSUuK3e/fuy0ajsaiqqsr31KlT/unp6XUqlcqm1WpL+6oLAQCHDh0KNBqNMp1OV1JSUlJ84cIF+fHjx/vtgLVo0aKYhISEmb/+9a+vDyzT2NjoExERYQOAqVOn2hobG8fMBfuYCZSMbhZjHnynzoJINg4mw2lMlADM2ZBXL5mFVvt4LHrIc02HhBDPGEwLgCd1dnaK4uLi4gEgOTm5bcOGDQ3bt29XFhYWyhMTE2cCgMViEalUKjsglJVetWpVEwDodDqZSqWyaTQaEwAoFAoHAJw+fTpQr9fLjx49GgwAbW1t4uLiYplUKuVqtbojKirKBgAJCQmmsrIyqbuxnjhxIjA3NzcwPj4+HgBMJpNIr9fL0tLS2ntb/vPPP9dPmzbNVl1d7fPAAw/EJiQkWHouKxKJhlZMb4RRskCGjDscMJf9HYHfelqY0H4Ovi4lasp97kenvRExySrvBEgIGXW6+yy4TuOcs+XLlzd2l3h2JZVKHT4+/Z+yOOcsMzOzatmyZa2u03NycgJ8fX2vd6ISi8Ww2+1un6k559i4cePVzZs3u1V8a9q0aTYACAsLsy9ZsqT5iy++GJeWltY+YcIEe2VlpSQiIsJWWVkpUSgUY+YKim5DkCGzXi2Fw9QCv+hkWOpr4a9sg6Toxvxi6wNw+DYhdHqg94IkhIx6qamprTk5OcHV1dU+gPD0QGlp6S0tALNnz7bU1dVJtFqtHACamppENpsNixcvbsnKyprY2dnJAECn0/m2trb2e54bN25cV0tLS7/LpKWltR44cEDZvVx5ebmkO8aeWltbRU1NTaLu95999lng7NmzzQDw8MMPN+/bt28CAOzbt29Campqc2/bGI2oZYEMmWvnxua/fwT/AEB8SZjXBR+UOhZiQmz5mGpyI4SMvKSkJEt6enr1okWLYh0OByQSCd+1a1dVbGys1XU5mUzGs7Ozy9avXx9usVhEMpnMkZubW7pp06aGiooKX7VaPZNzzhQKhe3YsWNl/e1z5cqVDampqbEhISHWvvotLF26tLWoqEg2f/78OACQy+WO7Ozs8rCwsFtaBq5cueLzxBNPRANAV1cXW7ZsWeP3v//9VgB44403rj7xxBNRERERyrCwMOvhw4f7jW00YZzzgZcaBvPmzeP5+fle2TfxrKt/+Alaz2Yj9p0mVGY+iOCLnyHo98K8b6TfQqb9E8SvKcE/75nv3UAJuQMwxs5xzucNZRsFBQUViYmJbjWpk7tLQUGBMjExMbLndLoNQYbMUpYHWdR8MJEIaDsHaemNFoQqPw3s3IyZDwR7MUJCCCFDQbchyJA4Ok2wVOkw4dGfwn7tIiTSVkj1N+YbHN9BJxoQPT8MAGCu0KPsF6vhsHV6KWJCvC/suVcw4YFl3g6DDEFNTY04JSVlRs/pZ86cMYSGhg55UKfRhpIFMiSW8vNAlx1+Ucloy38fPm2AuFaYZ8U4lHbcC8hLMTE8DgBQvf8X6NCfQ+DcFO8FTYiXiWR+3g6BDFFoaGhXz6c57mSULJAhce3cWPvHn8LPeGPeFdG3YYEvJs7sAmMM1sZaNJz6M0IefxHT/u03XoqYEELIYFGfBTIkZmMeJMoIMJENaDfA16Vv7zdBKQCAGI0vAKD28F5wmxWhT77khUgJIYTcLreSBcZYKmPMwBgzMsZ+1s9yyxhjnDE2pJ66ZOwwl+VBFp0Ms+Ew4AD8Lt2Yd8n3O7DyFsy4fwIc1k7UHsrC+AXfg194rPcCJoQQMmgDJguMMTGA3QDSAMQDeIYxFt/LcgEANgDI83SQZHSyN9fA3lAFv+hkmPWH4ChnELUJ80xQorw9XujcOE+Fxk8/hO1aLSY9tcG7QRNCCBk0d1oW7gVg5Jxf4pxbAfwZwOO9LPdzAP8JwOLB+Mgo1t1fwXdqLKxVuZCU3hizo1KUApNJAnFAC4InyXH1L2/DL3Imgu5d7KVoCSGjiVgsToqLi4uPiYlJSEtLm97W1uaV2+IZGRkq131rNJrohoYGMQDI5fI5t7PNhoYGcWpq6vRp06YlTJ8+PeH06dPjAGFEygULFsRERETMWrBgQUx9ff2Yqa7nzpcTBsC10MgV57TrGGNzAUzlnP93fxtijL3IGMtnjOXX19cPOlgyupiNeYDYB7BeBrgD/i4FW6/4amAHEDqbo/3rL9ChP4fQ5S/RKI6EEAA3akNcvHixSCKR8MzMzInurmu3e66kwr59+0La29uvnwu1Wq1RqVQO6dHHF198cepDDz3UWl5eXlRcXFx8zz33WADg9ddfn5SSktJWWVlZmJKS0vbaa6+FDjX+kTLkpyEYYyIA2wGsGmhZzvnvAPwOEEZwHOq+iXeZjXmQhSfCcvFvcHQFQV7dcn3eVeV3wau7EJsiR82Hv4I4YDwmfu+HXoyWENIb45svTDWVFco9uU151CxTdLr71SwXLlzYrtPp/ABgz549iqysrBCbzcbmzp3bsX///kofHx/I5fI5K1asqM/NzQ3ctWtXlUwmc2zcuDHcZDKJpFIpz83NNQQEBDjWrl075ezZswFWq5WtXr26bvPmzQ05OTkBGRkZkxUKhc1gMPip1WrTkSNHyrdt26aqq6uTaDSa2ODgYHteXl5pWFiYOj8/v2TSpEk3ZSRbtmwJOXz4sMJqtbIlS5Y079ix45vePktjY6M4Ly8v4ODBgxWAMDS1TCbrAoATJ06M12q1BgBYs2ZNo0ajmQHglqJZo5E7LQvVAKa6/HsKbv5wAQBmATjDGKsAcB+Ao9TJ8c7GHV2wXPoKsun3oLP8NBzFMohswrxmNg11jqno5E2InmlD45lDUD32I4j9xnk3aELIqGOz2XDy5MlAtVptPn/+vOzgwYOK/Px8vV6vLxaJRHzv3r0TAMBsNouSk5M7DAZDsUaj6VixYkXUzp07qwwGQ7FWqzX4+/s7du7cqQwKCuoqLCwsKSgoKHn//fcn6vV6KQCUlJT47d69+7LRaCyqqqryPXXqlH96enqdSqWyabXa0r7qQgDAoUOHAo1Go0yn05WUlJQUX7hwQX78+HH/3pY1GAxShUJhX758eeTMmTPjn3rqqYjuYlaNjY0+ERERNgCYOnWqrbGxccwMX+BOoF8BiGGMTYOQJDwN4NnumZzzFgDK7n8zxs4A+DfOORV+uINZq/VwmNsgGS9BZ40NPl9fuz6vkqWguRHoRD0Cr3yEa5xj0vfXeTFaQkhfBtMC4EmdnZ2iuLi4eABITk5u27BhQ8P27duVhYWF8sTExJkAYLFYRCqVyg4IZaVXrVrVBAA6nU6mUqlsGo3GBAAKhcIBAKdPnw7U6/Xyo0ePBgNAW1ubuLi4WCaVSrlare6IioqyAUBCQoKprKzslmqWfTlx4kRgbm5uYHx8fDwAmEwmkV6vl6WlpbX3XNZut7OSkhL522+/XfXAAw90PP/881O3bNkS+vbbb9/UEiESicbUbdkBkwXOuZ0xtg7ASQBiAO9yzosYYxkA8jnnR4c7SDL6dHdu5JZLYH4qBNbXXZ9XJUpBp1UEWXA9Wk6/B8V3/gm+kyK8FCkhZDTq7rPgOo1zzpYvX964e/fuW5rmpVKpw8en/1MW55xlZmZWLVu2rNV1ek5OToCvr+/1W99isRh2u93tMzXnHBs3bry6efPmAYtvRUZGWkNCQqwPPPBABwA89dRTTW+99VYoAEyYMMFeWVkpiYiIsFVWVkoUCoXnOl8MM7d6n3LOj3HOYznnUZzz/3BOe623RIFznkKtCnc+s/FLiPyDYKv+HBCpMa7xxryr478DB4C5CafR1dpEj0sSQtySmprampOTE1xdXe0DCE8PlJaW3tICMHv2bEtdXZ1Eq9XKAaCpqUlks9mwePHilqysrImdnZ0MAHQ6nW/3LYC+jBs3rqulpaXfZdLS0loPHDig7F6uvLxc0h1jT+Hh4fbQ0FBrQUGBLwB88skngTNmzLAAwMMPP9y8b9++CQCwb9++Campqc0DHZPRYszcLyGji9mYB79pkeC2ArBiK5gzZ2+UzYZtvBKOxk5ESz+GPPIeBNxzv1djJYSMDUlJSZb09PTqRYsWxTocDkgkEr5r166q2NhYq+tyMpmMZ2dnl61fvz7cYrGIZDKZIzc3t3TTpk0NFRUVvmq1eibnnCkUCtuxY8fK+tofAKxcubIhNTU1NiQkxNpXv4WlS5e2FhUVyebPnx8HAHK53JGdnV0eFhbWa8vAb37zm6oVK1ZMt1qtLDw8vPODDz6oAIA33njj6hNPPBEVERGhDAsLsx4+fLjf2EYTxrl3HkqYN28ez8+nBoixyGFph+GFIIy/LwHcVg3RuzKEFgu3474Sr8enygxYLYexOO55RKW/B9Ujq7wbMCF3EMbYOc75kDqQFxQUVCQmJg7YpE7uPgUFBcrExMTIntOpZYEMmvnSOQAOOEyX4Be/HLIr71+fVylKQWujCLOnvwNx0EQoFz9907ptFa346mefo8vmGNmgCRlFZq6ehSmpkd4OgxC3UbJABs1izINYDsDeATGPh7xVaJ1yiCWoFi2ARHQJ4eP/D6HL0iHyld207teZ5/DNmStQzFb2smVC7g4OOyXLY11NTY04JSVlRs/pZ86cMYSGhg5pUKfRiJIFMmjmsjz4hgSASTm6tDcqRzWOT4bPOH9EifaBMzFCl/74pvVMNR249GEpYn4wE8m//s5Ih00IIR4TGhra1fNpjjsZlagmg2Y2fgkfuRWy6CUQaf/3+vRLthTAtwWRygOwTFkMqXLSTesZfl8Ih82BmT9JHOGICSGEDAW1LNyFHFYzeNftPd7b1VwDbvkG4IBsxhPwKT18fV6ZWQP/rgOQiNvh/8hPblrP1m6D4d0ihD8yDYHTg4YUPyGEkJFFycJdpunT36Hm3Z8Ajtu/peYbCkAkhS+PhbhdeKKpy28carrugTpgDWraErD48QdvWsf4X3pYmzuRsO6eoYRPCCHECyhZuIuY9J+j5r21kMd9B/5zltzWNjjnsOp/AWn4t2E7/DG666s2TdYguON/4C+7hH+0v4Ingm90bHTYHSjZU4CJ94Zi4r1jpsgaIYQQJ+qzcJewXfsGV95eDt9JIRgXGwiYcm/v1XYKvPMa/OKWgR87dn37VaIUhE3Kgsk6GaLZKTftuyqnHO2VbUh4ifoqEEIEYrE4KS4uLj4mJiYhLS1teltbm1fORxkZGSrXfWs0muiGhgYxAMjl8jmD3V5BQYFvXFxcfPfL399/TkZGhgoQRqRcsGBBTERExKwFCxbE1NfXiwfa3mhBycJdwGHrRPXOpfCRN8I36BvYruahq6Xqtl6OjjpII74Lv+hHIS3QXd+H8doUBEjPoLT2OUQvUF2fzjlH8W8vIGB6EKakRY78hyeEjErdtSEuXrxYJJFIeGZm5kR317XbPVdSYd++fSHt7e3Xz4VardaoVCpv+z5tYmJip16vL9br9cWFhYXFMpnM8fTTTzcDwOuvvz4pJSWlrbKysjAlJaXttddeGzNNrXQb4i5Q884PIOrKgyQYkM9dg6AHMyGSDrFc9LlzgLkTAOBQBEMSdBJdDhmK61Nx/7wbyULdlzVoOFeH5F/fD5GYclNCRptv9r4wtfNKodyT2/SdMss0+V/cr2a5cOHCdp1O5wcAe/bsUWRlZYXYbDY2d+7cjv3791f6+DzCiX4AACAASURBVPhALpfPWbFiRX1ubm7grl27qmQymWPjxo3hJpNJJJVKeW5uriEgIMCxdu3aKWfPng2wWq1s9erVdZs3b27IyckJyMjImKxQKGwGg8FPrVabjhw5Ur5t2zZVXV2dRKPRxAYHB9vz8vJKw8LC1Pn5+SWTJk26KSPZsmVLyOHDhxVWq5UtWbKkeceOHd/0/mluOHr0aGB4eHhn93DVJ06cGK/Vag0AsGbNmkaNRjMDQjXnUY/+et/BOHeg7k9Pw1H/V4jHyaF48iiCv7d36IkCAMepU9fft0y/HxMn/AWXG59Ci82G6XNvJAvFv70AX4UMUc/cMnYJIYTAZrPh5MmTgWq12nz+/HnZwYMHFfn5+Xq9Xl8sEon43r17JwCA2WwWJScndxgMhmKNRtOxYsWKqJ07d1YZDIZirVZr8Pf3d+zcuVMZFBTUVVhYWFJQUFDy/vvvT9Tr9VIAKCkp8du9e/dlo9FYVFVV5Xvq1Cn/9PT0OpVKZdNqtaV91YUAgEOHDgUajUaZTqcrKSkpKb5w4YL8+PHj/gN9tg8++EDx/e9//3qZvcbGRp+IiAgbAEydOtXW2Ng4Zi7Yx0ygZHC6WqvR8JcnYK/9ChApEbKuAD6Bkz22fcffjl7PNGu6RBBLLSit/TGCIuogDxSKxLVcbMLl4xWYvTkJPnKJx/ZNCPGcwbQAeFJnZ6coLi4uHgCSk5PbNmzY0LB9+3ZlYWGhPDExcSYAWCwWkUqlsgNCWelVq1Y1AYBOp5OpVCqbRqMxAYBCoXAAwOnTpwP1er386NGjwQDQ1tYmLi4ulkmlUq5WqzuioqL+f3t3Hldllf8B/HPufi/7ZVVUUFERRBRcymrQcMFcSszKNG3TFvm5VP6mKSu1xpYZl2gUaXF+ozFjuRsppk3C5JSJJoQCCrIoyr5z9/uc3x8XDBEQAble+L5fr/t67nPuuec5z7WZ58t5znO+RgAIDAzUZGdn35TNsiUJCQmOSUlJjgEBAQEAoNFoRBkZGYqpU6fWtvQdnU7Hjh075rRhw4YrzX0uEonAWJuzZFsdBQvdkOb816j89gUI2ioY61zRd1UGJA6unXcAnQ6i5NPXd6uFn1BjDEOV1h/9x/2eRj59SypEMjGGPD+s845NCOkWGuYsNC7jnLM5c+aUbd68+aaheZlMJkgkrV+yOOds/fr1+bNnz65uXB4fH+8gl8uvZ00Ui8UwmUxtvlJzzrF8+fJrK1eubHPyrd27dzsFBARo+vbte/12hqurqykvL0/q4+NjzMvLk6rV6s6bfHGH0W2IbkTQVaH8wAJU7H0cZp0Zdfky9Hr5+84NFADgp58gMljWVzD1doagKMKVmpeg56UYNMYyR0lbokH2zkwMfGIIlO6dejuUENJNRUREVMfHx7sUFBRIAMvTAxcuXLhpBGD48OG64uJiaWJiogoAKioqREajEZMmTaqKiYlx1+v1DABSU1Pl1dXVrV7n7OzszFVVVa3WmTp1avWOHTvcGurl5ORIG/rYkp07d6ofe+yx8sZlU6ZMqYyNjXUFgNjYWNeIiIjK1tq4m9DIQjehz/8PKg48BXP1FTDHMaj96Rf0joqDwucOPK74/ffX31Y6SKDV98el/CnQIRMDQ/sCADK/OAezzoyAl4d3/vEJId1SaGiobtWqVQXh4eGDBUGAVCrl0dHR+Q0TBBsoFAoeFxeXvXTp0n46nU6kUCiEpKSkCytWrCjNzc2VBwUFDeWcM7VabTx06FB2a8dcuHBhaURExGBPT09DS/MWIiMjq8+dO6cYPXq0PwCoVCohLi4ux9vbu9mRgerqatGPP/7o+I9//COvcfmaNWuuzZo1a6CPj4+bt7e3Yd++fa327W7COOe3rnUHjBo1iicnJ1vl2N0JNxtQnfgOav/7IcQuAyDznYeiL9dC/dAKeD614c4cc+xYsF9+AQBkDgKStR/g7NUlKOSJ+LR6EqQihj3Dv4T7aE88+K+H7kgfCOmpGGOnOeejOtJGSkpKbnBwcJuH1EnPkZKS4hYcHOzbtJxGFmyYseQ8Kg7Mh7HwV6hGPA/54IXIf28SVAHj4fHkR3fmoFVVQH2QxxlQ6WSHKs18CABcBhqhtJchc9s56Mt0tLQzIYR0ExQs2CDOBdQlb0bV9/8Lkcwe6scOQOo1DjlvhkLs6A7vZV+Die/QP+3x42CCAADQuwPFhqfA7ZwhMB0G3GsHwSzg/JYUuIZ4wGNcr1s0RgghtqmwsFA8fvz4m54JP378eKaXl1f7k+/cpbp1sMC5AK6rhFlTAqGuBIKm2LLV28yckmbpc76HPuco5H4PwWX6FxAp3ZD/QQTMVUXweedHSBzbvBDa7Ws0X6HKGcjLeQF19hw6oQSDRnvgSkIearKr8Idtk2zqsSBCCLkdXl5e5qZPc3RnNhcsCIZamGsK6i/+JRDqii3BQP17QVMCs8ayFTSlgGAzT6a0GZPawXlqDFQhL4AxhqK4ldCkfY9eL/4dyoGt3MrkHPjwQ+Crr4D2Lpeak3P9bVXfUdDl+aGimEPHSzBwlB/OrfkZ9v0c0G/GgPa1Twgh5K5jc8FC3alPUP3DGzeVM7kjRCoPiO3cIXHuD1HvsRCp3CG284BI5W552XlArHIHUziDMRt+alQsBRNZ/umqf/oK5fF/hcvkJXAOe7r17/35z8Bbb3VKF7gEKPX7E9h/ASNnMIrK4GAagJKThRj9wX0QSWz49yWEEHIDmwsWFINmQOzYFyKVB0R27hDXBwJMIrd217qcLi8VV2OfhXLIfbd+8uHTTzstUACA6nukKMiPgMKTA/kc7v5mZH2RBpmTDH7zhnbacQghhFifzQULUo9hkHrQioDm2nJc2TALYpUz+izfDSZpZeXSvXuBl166vqsdBFTPsjzNcLvEMkDpD2jEc1G4TABzZDCLajFomAr53+QgcNkISO1paWdCCOlObC5YIAAXzCj42zwYyy7D5+1ESJxbyXJ6/Dgwdy5Q/wSDaSCgf49BKnVq9/H13A7SQR9AXwnoTAK05mJ4VOuhFzP4Lw5qd7uEkJ5DLBaHDho0SGs2m5mfn5/266+/znVwcBC6uh9r1671WLFiRWnDscPCwvz27NmT4+bmZlapVCM1Gs2vt9vmmjVrPHbs2OHOGIO/v7/mq6++ylWpVDwjI0P22GOPDaisrJQEBQVp9uzZk6NQKKyz2NFtohvLNqhk1zuoS0mA1zN/g2rwvS1X/PVXYOZMoGFp5l5A3RoG+8m/Qj2rot0v18grKP7NDQBQU8FgQhH0vxaj/2ODofLqeEZLQkj315Ab4uLFi+ekUilfv359mx/jMrV3gnYzYmNjPWtra69fCxMTE7Pc3Nza/ehjTk6O9NNPP/U8e/bs+YsXL54zm83s888/VwPAK6+80icqKqooPz8/zcnJyfTxxx+7dcY5dIVuP7Jg1lRDfyUN+rxU6PJTob+cCmNxjuXJABtlqrwG5wnPwyV8ccuVsrOBqVOBmhoAgNkZ0KwDFJO+h8S540tAXzslQCwHTEagt+IqBL0ZgUvuwNLShJA7quKbZ/saS9I6NYGL1H2YxmVG27NZ3n///bWpqalKANiyZYs6JibG02g0spCQkLrt27fnSSQSqFSqkfPmzStJSkpyjI6OzlcoFMLy5cv7aTQakUwm40lJSZkODg7CkiVL+pw4ccLBYDCwRYsWFa9cubI0Pj7eYe3atb3VarUxMzNTGRQUpNm/f3/OunXrPIqLi6VhYWGDXVxcTCdPnrzg7e0dlJycnN6rV68bIpK33nrLc9++fWqDwcCmTZtWuXHjxqstnY/ZbGZ1dXUiuVxu1mq1oj59+hgFQcBPP/3kcODAgUsA8Oyzz5atXr269x//+MeS9v7OXanbBAtcMMNQlA19fir0+fWBQX59YFBPpHKCvN9w2A2fcucWLeoCEmcvuD7yZssVCguByZOBoiIAgKAEtB8A4ns+h9xjQqf04VqyGXJ3BlZngK9SC+8H+8F5qLpT2iaE9BxGoxFHjhxxnDx5cvWZM2cUu3fvVicnJ2fI5XI+f/78flu3bnWNiooq02q1orFjx9Z99tlnV3Q6HfPz8xsWFxeXHRYWpikvLxfZ29sLmzZtcnNycjKnpaWla7VaNnr0aP8ZM2ZUA0B6erry7Nmzl3x9fY2hoaH+R48etV+1alVxTEyMZ2Ji4oWmwUFje/fudczKylKkpqamc84xceJEv8OHD9s3l6K6f//+xiVLlhT2799/uFwuFx544IHqyMjI6mvXrkkcHBzMUqllTpevr6+hqKiozWmyrc0mr5jm2nLo8n+rDwpSLAHC5TRwg9ZSgYkg6z0EyoFj4Dzhecj7DYei33BIXPt2/4WCqqosIwqXLgEABAmgWwcY/F+B2v+5TjmESc9RkiJA5AE4Ss9BKnAE/A+NKhBii25nBKAz6fV6kb+/fwAAjB07tmbZsmWlGzZscEtLS1MFBwcPBQCdTify8PAwAZa00k8//XQFAKSmpio8PDyMYWFhGgBQq9UCABw7dswxIyNDdfDgQRcAqKmpEZ8/f14hk8l4UFBQ3cCBA40AEBgYqMnOzm7zhTohIcExKSnJMSAgIAAANBqNKCMjQ9FcsFBSUiL+9ttvnbOysn5zdXU1T5s2bcCWLVvUs2bNqr65Zdthc8FC6YEPULLzT9f3xfaukPsEwyX8Bcj7DYfcJxhy76EQyZRW7KWV6HTgDz8MdvYsAICLAN3bQJXXJPQKW99phyn5TYDZAFQWCeglvQhJb3t4PeDdae0TQrq/hjkLjcs452zOnDllmzdvLmhaXyaTCRJJ65cszjlbv359/uzZs2+4MMfHxzvI5fLr957FYjFMJlOb/3LknGP58uXXVq5cecvkW998841jv3799L179zYBwCOPPFL53//+1/7FF18sr6mpERuNRkilUuTm5so8PT0Nt2rvbmFzExztAifA48mP0Pf1BPhtuYpBn5bAZ9X38FywEc7jn4Gyf0jPDBTMZvAnHgdLTLxepFsBlLn3h+djCZ16qGunLHN/xIarUIl1GPB0QPcfsSGE3HERERHV8fHxLgUFBRIAKCoqEl+4cOGmEYDhw4friouLpYmJiSoAqKioEBmNRkyaNKkqJibGXa/XMwBITU2VV1dXt3qds7OzM1dVVbVaZ+rUqdU7duxwa6iXk5MjbehjU76+voYzZ87Y19TUiARBwL///W+HoUOH6kQiEe65556av//97y4AsG3bNtfp06fbTO6BNo0sMMYiAHwMQAzgc875B00+fwXA8wBMAEoAPMs5z7upoU6g9BsLpd/YO9G07eIc5qcXQHzg4PUi/fNAiY89vOYmQyTq3Jiw8JQAmROg0pyHVmAY+fLwTm2fENIzhYaG6latWlUQHh4+WBAESKVSHh0dnT948OAb/gJXKBQ8Li4ue+nSpf10Op1IoVAISUlJF1asWFGam5srDwoKGso5Z2q12njo0KHs1o65cOHC0oiIiMGenp6GkydPXmiuTmRkZPW5c+cUo0eP9gcAlUolxMXF5Xh7e980z+HBBx+smzFjRsXw4cOHSiQSBAYGal555ZUSAFi/fv2Vxx9/fOB7773nHRgYqFm2bJnNpAln/BZPBTDGxAAuAJgE4AqAUwDmcs7PN6ozAcBJzrmGMfYSgPGc88dba3fUqFE8uT7VMekY/QvPQP7p//2+HwmUhDM4hSfDYUhIpx9v2/A6GGpLoao4hGtuKvzx4sJOPwYhpHmMsdOc81aSwNxaSkpKbnBwsM1cqEjXSUlJcQsODvZtWt6WPznHAMjinF/inBsA7ATwcOMKnPMfOOea+t2fAfTpYH9JG9W89NQNgYLhQYbyhwBR38/vSKCgq+Qov8Ahrj0PE5fAeULfTj8GIYSQu0tbbkN4A2g8W/YKgNbuAzwH4HBzHzDGFgNYDAD9+vVrYxdJc7ggoPS5R+D2f99cLzOOlqDqGROqriyC/3PPNvu9KyfMSPyTHiZd+45r0nKIWC1khjxcMbhh7D2trB5JCCHdVGFhoXj8+PFDmpYfP34808vLq92LOt2tOvVpCMbYfACjAIQ19znn/FMAnwKW2xCdeeyexFxXg4KnJ6PPnp/RMK3QFCBFzStG5H8fipFbNjf7vcpsAfvnaCG1Y/Ac0d55DAxKZMJ4GbikE2HeKI92tkMIIbbLy8vL3PRpju6sLcFCAYDGY8196stuwBibCOBNAGGcc33ndK9zcM5hLC+CNjcd2px0GEqu4FZzNe5m+oO7MPBoNkT1pyD4ylH3lh4Xdrli5NZ4iKQ3J3LSV3Psna0FuBH3v1YKpbqd5y8AJ5ZeRIXRF1pZEfoG0EJMhBDS3bUlWDgFYBBjrD8sQcITAJ5sXIExNhJALIAIznlxp/eyjbjZDP21XGhz06HJTbcEB3kZ0Oamw1xTCXBAYgakZjHQgScEGHB9uWjLe7T6HgAYv3HbXiIzMDBbgLg+3YrgKUfdu3qc/5cIQ1bth9z95tsCgpkjfoEOddlX4dn7Z5x+/aZ1RG4TQ4ngh74jayGW2NzTt4QQQm7TLYMFzrmJMRYF4Agsj05u45yfY4ytBZDMOT8I4C8A7AHsqn/ePp9zPvNOdVrQ66DNv2AJBhq/Ll8A0+oh1wNyPaCSOMBZ4gSlyRmyOjtISivA6jQAzPUv28adZND+WY/Mb4Fej2yEevT9zdb74dUalH5/Ek6SLMicnHF/zHTY93No93FjphpRkVuKkNF0C4IQQnqCNs1Z4JwfAnCoSdnbjd5P7OR+tejq9g9RuPF1yHWWgEBhANxE9lCYJJDVSSCpbnwHpKb+1f1wpQSadw3I+gWQeD4Jn6f/p9l6P76Whfz/+xFKqQ7Dlo1E8B9HQaxo/1QVTQVH8aU6aIViDBzl2e52CCGE2A7bWu75m2/Q67k30fumZTBuY1hdpQK8vQGxuGN9EYkAxlre3uqzDjDjGvQPX8CVEgWq8vwwbu+nN62gqCvTIvHZ/6AoKRsSOxdEHHwI7qEeuPhvE+Jf17T7aQijznIfRYdS+I0K6tB5EEJ6LrFYHDpo0CCt2Wxmfn5+2q+//jrXwcFB6Op+rF271mPFihWlDccOCwvz27NnT46bm5tZpVKN1Gg0v95um++++67H9u3b3TnnWLBgQcnbb79dDFhWpJw1a9aAgoICube3t/7AgQOX3N3dbWKY27aCBU9PMNMtflexGPDxAfr3B/f1Be/rDN5LCsHLBLNbFQTFZXDDNdwwoeC2cYALAASAm8AhANzcqOzmLefmRmUdnLhgrkVFhhp5B4y4b/9eSFR2v/eMc+Ttz8bPr/4H+goDBMdgPPbLGNh5SpD/ixnbHtHBwYvBO7j9T0OY5UW4eqkcvYc4d+w8CCE9VuPcEDNnzuy/fv1699WrVxe15bsmkwm3yhPRVrGxsZ6LFi0qbwgWEhMTszrS3qlTpxTbt293P3PmTLpCoRDCwsIGR0ZGVg0bNkz/zjvv9Bo/fnzNunXrLr7xxhteb7/9tldMTMxNDwzcjWwrWOjf37L18rK8798fvH9/S0DgJYLZQwfBuQxcnwVBexGC5j8Ab7RKqN4OItEgMEU/WBam7AAmBiACmOj3bX0Za1x2w1Zc/75jIwtF3/8H5zedQsiW/bDrP+h6uaawDidf+w8uf5sDLndFrXQi5h7zhp2nCEXpAj6broWDJ0NUkhKOXu2fmPj6uGQMCHWFWEyTGwmxddrzz/YVatNUndmmyH6YRhnQ9myW999/f21qaqoSALZs2aKOiYnxNBqNLCQkpG779u15EokEKpVq5Lx580qSkpIco6Oj8xUKhbB8+fJ+Go1GJJPJeFJSUqaDg4OwZMmSPidOnHAwGAxs0aJFxStXriyNj493WLt2bW+1Wm3MzMxUBgUFafbv35+zbt06j+LiYmlYWNhgFxcX08mTJy94e3sHJScnpzdNWf3WW2957tu3T20wGNi0adMqN27ceLW5c/ntt9+UI0eOrG0IPu67776anTt3Or/33ntFCQkJzomJiZkA8MILL5SFhYUNQTNPF96NbCtYcHOD+eoPMNV9B0FzAYImDYJmPyDULx5ZB0Arh0jpByb3A0T3QF+lgOaqgNqcGlRfKIAmNwu6opTrTzPYqoEvvwHPyZaFNDnnyP5XJpLfOAGz3gz5wFG4kj4Ejx5UQT1IhIrLAmIjtBBLGBYndCxQMJsE5PxagikvDeusUyGE9GBGoxFHjhxxnDx5cvWZM2cUu3fvVicnJ2fI5XI+f/78flu3bnWNiooq02q1orFjx9Z99tlnV3Q6HfPz8xsWFxeXHRYWpikvLxfZ29sLmzZtcnNycjKnpaWla7VaNnr0aP8ZM2ZUA0B6erry7Nmzl3x9fY2hoaH+R48etV+1alVxTEyMZ2Ji4oWmwUFje/fudczKylKkpqamc84xceJEv8OHD9s3l6J6xIgR2rVr13oXFhaK7ezs+NGjR52Cg4PrAKCsrEzi4+NjBIC+ffsay8rKbOYabDMdBQAwBrMxBYa8v4ApB4ApBgIsGPoqFbRFAmpyalGTcQ11uVnQXfvmhq/KXN1h5zsIruPCoejVF6yjcxasSO7uhX5zFwMAavNr8PMribj6/WV43OMFyYD7cPYLFcI3yeATLkFtKcenEVroqzle/kEJh94CTnydDYOufbfJKos0MOjM8KPFmAjpFm5nBKAz6fV6kb+/fwAAjB07tmbZsmWlGzZscEtLS1MFBwcPBQCdTify8PAwAZa00k8//XQFAKSmpio8PDyMYWFhGgBQq9UCABw7dswxIyNDdfDgQRcAqKmpEZ8/f14hk8l4UFBQ3cCBA40AEBgYqMnOzr4pm2VLEhISHJOSkhwDAgICAECj0YgyMjIUzQULISEhumXLlhWGh4cPViqVQmBgoEbczPVGJBLZVLZe2woWAJSdc0d+3P2oy7kE3bWEG0YIZGo3qHz84HrPBKh8B8Gu/yCofPxg5+sHqWP3ur/OBY7ML9JwevXPAOcY8+H9MCmGIGGxAcGLJBjxghT6Wo4vZmhRnsux+LASHgHAuhnf4ux3Hfv/BpGYwX9cr046E0JIT9R4zkIDzjmbM2dO2ebNm28ampfJZMKt5ilwztn69evzZ8+eXd24PD4+3kEul1+/WIjFYphMpjZfqTnnWL58+bWVK1e2KfnWihUrSlesWFEKAFFRUd59+vQxAICrq6spLy9P6uPjY8zLy5Oq1eoWRzPuNjYXLAhaM8x1WqjH/KFRMDDIEhA4uVi7e12iOrsSPy09jqL/XkOv8X1w78dhqCqww9dTtOg3XowHN8hhNgD/N1uHK6cFLNytgO99DBuf/A5nv7uMxZvDMDKi/bk5lA4yOLkrO/GMCCEEiIiIqI6MjPR74403iry9vU1FRUXiqqoqcdMU1cOHD9cVFxdLExMTVWFhYZqKigqRvb29MGnSpKqYmBj36dOn18jlcp6amir39fU1tnZMOzs7c1VVlahXr5b/AJo6dWr16tWrey9evLjcyclJyMnJkcpkMt5cimoAKCgokHh7e5suXrwo+/bbb51PnTqVAQBTpkypjI2NdV23bl1hbGysa0RERGU7fiarsLlgwTvyKXhHPnVDGeccxmoDanKqoC/X1b/00JVroS/XW/YrdNCXWT4z1hhaaN02aAo1EMvFuDd6PPzm+6M6n+PA41o49GWY8U8FmAiIe0qPC8fMePwLOQJniLH1peM48XUWFnw0DlNfpkceCSF3n9DQUN2qVasKwsPDBwuCAKlUyqOjo/ObBgsKhYLHxcVlL126tJ9OpxMpFAohKSnpwooVK0pzc3PlQUFBQznnTK1WGw8dOpTd2jEXLlxYGhERMdjT09Nw8uTJC83ViYyMrD537pxi9OjR/gCgUqmEuLi4nJaChZkzZw6srKyUSCQSvmnTpnw3NzczAKxZs+barFmzBvr4+Lh5e3sb9u3b12rf7ibMWjkSRo0axZOTk2/7e/mHcpD9z0zoy7TQVzQEAnpwU/OP5zIRg8xZDrlaDrlaCblaDqmDDExkO/eKmpI5yzFs6QioetvDUMvxrwe1qM4T8GSSCurBDHuj9PjvVhOmfyTDhFdl+OdbP2PXe8mY9ccQLPhgnLW7TwjpAMbYac75qI60kZKSkhscHNymIXXSs6SkpLgFBwf7Ni23uZEFfbkONZeqIHdVwGmIC+QuCsjVcihcLYGAZV8BuatlK3OS23Rg0BoucBx6VofSNAGR+xVwHSLCkTWWQGHCSikmvCrDN5vOYtd7yZj4fACeev9ea3eZEEKIDbK5YGHQ/KEYNH+otbtxVzixxoCsg2ZM+KsM/SdL8ONmA75ba8TopyWY9r4MP2zPwLYVP+KeyAF4cet4m5p5Swghd7PCwkLx+PHjhzQtP378eKaXl5dNrMp4O2wuWCAW6TuN+PlDI4Y/K0HIEinO/MuI/csMCJwpxpxYOU59k4u/Pfs9hof3wSv/nEILKBFCSCfy8vIyN32aozujK4gNuvaLGQkv6NHnARHCN8mR+Z0Z/3paj/4PiPDUPxVIP3EVf30sAQNC3PH6vocgldvumhKEEEKsr9uOLHDOYagBtGUcugoOXRmHttzy3lB96++33jYs6SFu2vIb9i2Vm9TrBOe+NMG+N8PMfylx5YyAfzyqg9cwEZ7dr8TljFK8P/NbePR3xFuHZkDp0OZ1RwghhJBm2VywUJEtoPisAF357xf/mwMCQFfOIVhzuYvGySUb3jfadoSdJ8OsPQpUF3N8PkMLh14Miw8pUFFchbURB6FykmH1dzPh6EZrIRBCCOk4mwsWLh4wIemN3x+5lagApQuDwpVB4cLgFsigVFveN5QpG2/VgMyBWfI5dUDTi//v266ZRFieJ+DTB7QQyxheSFDCYNJg9aQD4ALH6qMPw62vQ5f0gxBCSPdnc8FC4JMS9J8stgQEagaJoufN8K8tqc/3UMux0bnCIgAAFn1JREFU5LgSMmcD3nzgIGrKdHjv+Cx4D+kZK1kSQmyXWCwOHTRokNZsNjM/Pz/t119/nduQqbErrV271mPFihWlDccOCwvz27NnT46bm5tZpVKN1Gg0v95um++++67H9u3b3TnnWLBgQcnbb79dDAA//fST8qWXXvLRaDSiPn36GHbv3n2pIa/F3c7mggU7LxHsvNr/fbORw1DXsT5wwdKO2QgIJsBstLyE+rLr+6b6OtfLLPu8gw/V/LjZiIp8jhcSlHAZYMbqid/gWlYl3k6YiYGhlOCJEHL3a5wbYubMmf3Xr1/vvnr16qK2fNdkMuFWeSLaKjY21nPRokXlDcFCYmJiVkfaO3XqlGL79u3uZ86cSVcoFEJYWNjgyMjIqmHDhukXLVrk++GHH16eNm1a7aZNm1zXrFnj9fHHHzeb6vpuY3PBAuccBg2greCWVyWgqeDQVXJoKi37lnL++7ZRHf1NOcJsj1gKLNylQN8xwJ9nHEbWqWL8756pCJrQx9pdI4TYnGf7Ammqzm1zmAZoezbL+++/vzY1NVUJAFu2bFHHxMR4Go1GFhISUrd9+/Y8iUQClUo1ct68eSVJSUmO0dHR+QqFQli+fHk/jUYjkslkPCkpKdPBwUFYsmRJnxMnTjgYDAa2aNGi4pUrV5bGx8c7rF27trdarTZmZmYqg4KCNPv3789Zt26dR3FxsTQsLGywi4uL6eTJkxe8vb2DkpOT05umrH7rrbc89+3bpzYYDGzatGmVGzdubPYi/9tvvylHjhxZ2xB83HfffTU7d+50fu+994ry8vLkDZkqp0+fXj1lypTBFCzcIf/+0IhDb7ae20HuAKhcGBTODCoXwHUAQx9nEZQuDEpnBrlDo8mH7cEAsZRBLAFEEsvFWyStL5PeuN/w+e8vBibu2PGVzgxyJ46NT36HlKOXEbXtQYx9ZEAHTogQQqzDaDTiyJEjjpMnT64+c+aMYvfu3erk5OQMuVzO58+f32/r1q2uUVFRZVqtVjR27Ni6zz777IpOp2N+fn7D4uLissPCwjTl5eUie3t7YdOmTW5OTk7mtLS0dK1Wy0aPHu0/Y8aMagBIT09Xnj179pKvr68xNDTU/+jRo/arVq0qjomJ8UxMTLzQNDhobO/evY5ZWVmK1NTUdM45Jk6c6Hf48GH75lJUjxgxQrt27VrvwsJCsZ2dHT969KhTcHBwHQD4+fnp4uLinJ966qnKL7/8Ul1YWGgzj6vZXLDgN16Mae/LoHRmUDpbJjeq6oMApQuDwgkQS7r3PAbOOba+lIgTX2dh4V/GIfyZAGt3iRBis9o+AtCZ9Hq9yN/fPwAAxo4dW7Ns2bLSDRs2uKWlpamCg4OHAoBOpxN5eHiYAEta6aeffroCAFJTUxUeHh7GsLAwDQA03Pc/duyYY0ZGhurgwYMuAFBTUyM+f/68QiaT8aCgoLqBAwcaASAwMFCTnZ3d5gt1QkKCY1JSkmNAQEAAAGg0GlFGRoaiuWAhJCREt2zZssLw8PDBSqVSCAwM1IjFlrVutm3blhsVFdX3gw8+6BUREVEplUqtk5ypHWwuWPC5Rwyfe2xvkSHOOQSB/74eQwd8teYUvos9h8jXQ/DIayGd1ENCCOk6jecsNOCcszlz5pRt3ry5oGl9mUwm3GqeAuecrV+/Pn/27Nk3rKYTHx/vIJfLr/8fr1gshslkavNflZxzLF++/NrKlSvblHxrxYoVpStWrCgFgKioKO8+ffoYAGDkyJG6EydOXASA1NRU+Xfffefc1j5Ym80FC9oaAyoKNdDVGqGtMUBbY9la9n8va+lzXY0Bem0HF2DguH7hv3HLwbklwdPvW95pizE1NvH5AMxfR4mhCCHdR0RERHVkZKTfG2+8UeTt7W0qKioSV1VViZumqB4+fLiuuLhYmpiYqAoLC9NUVFSI7O3thUmTJlXFxMS4T58+vUYul/PU1FS5r6+vsbVj2tnZmauqqkS9evVqsc7UqVOrV69e3Xvx4sXlTk5OQk5OjlQmk/GWUlQXFBRIvL29TRcvXpR9++23zqdOncpoXG42m/HOO+/0eu6554rb8TNZhc0FC4e3/IYdr//Uah2ZUgKFvRRKBymUDjIo7KVwcFXAw9cRSgcpZEpJx+YswJL6mjHLeg2WLQNjaLL9vVwkYsD1bccO7uShRPizQykxFCGkWwkNDdWtWrWqIDw8fLAgCJBKpTw6Ojq/abCgUCh4XFxc9tKlS/vpdDqRQqEQkpKSLqxYsaI0NzdXHhQUNJRzztRqtfHQoUPZrR1z4cKFpREREYM9PT0NJ0+evNBcncjIyOpz584pRo8e7Q8AKpVKiIuLy2kpWJg5c+bAyspKiUQi4Zs2bcp3c3MzA8C2bdvUX3zxhQcAPPTQQxVLly4ta8/vZA2so0Pi7TVq1CienJx829/LSytDztlSSyBgL4XCQXb9fUNgIJZQyou7VU1NDQ4fPgyDofVJqoR0Z2PGjMHgwYPb9V3G2GnO+aiOHD8lJSU3ODi4TUPqpGdJSUlxCw4O9m1abnMjCz7DXOEzzNXa3SC3Sa/XIzY2Fu+99x5KSkqs3R1CrComJqbdwQIh1mBzwQKxLYIgYOfOnVi1ahVycnIwYcIErF69Gr1797Z21wixGnd3d2t3gXRQYWGhePz48UOalh8/fjzTy8urg0vv3X0oWCB3BOccR44cwZ/+9CecPXsWI0aMQEJCAiZPnkxzLQghNs/Ly8vc9GmO7oxu7pNO98svvyA8PBxTp05FVVUV/vnPf+L06dOYMmUKBQqEEGKDKFggnebChQuYM2cOxo4di7S0NERHRyMjIwNz586FSET/qRFCiK2i2xCkw65du4Y1a9bg888/h1KpxDvvvINXX30VDg6UJpsQQroDChZIu1VVVeGjjz7Cxo0bYTKZ8PLLL2PVqlXw8KDMl4QQ0p20aWyYMRbBGMtkjGUxxl5v5nM5Y+yr+s9PMsZ8O7uj5O6h0+mwYcMGDBgwAOvWrcMjjzyC9PR0REdHU6BACLnjduzY4Xz69GlFw/7y5ct779+/v9WhzNmzZ/v+/e9/d2lL+/Hx8Q4TJkzw62g/20ulUo201rFbcsuRBcaYGMBmAJMAXAFwijF2kHPeeBbocwAqOOd+jLEnAHwI4PE70WFyI5PJhOrqalRVVd3walrWeL+2tmN5urOzs1FQUIApU6bg/fffx8iRd91/14SQtmIs9I61zfnpzm7SaDRi//79ziaTqSo0NFQHAJs2bbKJNM+2rC23IcYAyOKcXwIAxthOAA8DaBwsPAxgdf373QD+xhhj/A4sD/nVV18hNja2PueCpfnbfd9RzbV7O/sd1ThA0Gg0t6wvk8ng5OR0/WVnZ9ehCYchISH4xz/+gfDw8Ha3QQjpuTIzM2URERGDgoKCNGlpaarBgwdrd+3albtmzRrPhIQEZ71eLxo1alRtXFxcnkgkwpgxY4YMGzZM88svv9hPmzat4tixY84///yzw4cffthrz5492W+//Xav6dOnVz3zzDMVr732Wq/m2riV3bt3O65cubKvUqkUxowZc/0vqurqatFzzz3XLyMjQ2kymdibb755df78+ZXR0dGuBw4ccK6pqZEUFRVJH3300bL169dfA4AtW7aoY2JiPI1GIwsJCanbvn17nkQigUqlGvncc88Vf/fdd04KhUKIj4/P6tu3rykjI0P2xBNPDNBoNKKIiIjKxv166623PPft26c2GAxs2rRplRs3bryamZkpmzp16qAxY8bUJicn23t6ehqOHDmSZW9vz9PS0uSLFy/2KSsrk4jFYr5r165LgYGB+ubauZ1/s7YEC94AGqcwvQJgbEt1OOcmxlgVAFcANywnyhhbDGAxAPTr1+92+nmdIAgwmUwN7V1/iUSi64/lNZS19r6jmmv3dvY7QiwWw9HREY6OjjcEAU33G8oUCsWtGyWEkC6Um5uriI2NzZ08eXLdnDlzfP/yl7+4r1y5svivf/3rNQB45JFH+u/cudPpySefrAIAg8HA0tLS0gEgKytL0RAcNG23tTZaotFoWFRUlO/Ro0czAwMD9dOnTx/Q8Nkbb7zRa8KECdW7du3KLS0tFY8aNWrozJkzqwEgNTXV7rfffjtnb28vjBw5MuDhhx+usre3F3bv3q1OTk7OkMvlfP78+f22bt3qGhUVVabVakX33ntv7SeffFLw4osv9vnkk0/cP/roo2svv/xyv+eff74kKiqq7P3337++YtfevXsds7KyFKmpqemcc0ycONHv8OHD9gMGDDDk5+crvvzyy0vjxo3Le+ihhwZs377d5eWXXy5/8skn+7/22muFCxYsqNRoNMxsNrOW2mkuxXZLunSCI+f8UwCfApbcEO1pY+7cuZg7d26n9osQQnqsO3CroC28vLwMkydPrgOAp556qiw6OtpjwIAB+g0bNnjpdDpRZWWlJCAgQAugCgDmzp1b3pZ2Dx8+7NBSGy05e/asok+fPvqgoCA9AMybN6/s888/dweA48ePOx45csQ5OjraCwD0ej3LysqSAcD9999f3bBa47Rp0yqOHz9uL5FIeFpamio4OHgoAOh0OpGHh4cJAKRSKX/iiSeqACA0NLTu2LFjjgBw5swZ+8OHD2cDwAsvvFD27rvv9gGAhIQEx6SkJMeAgIAAANBoNKKMjAzFgAEDDN7e3vpx48ZpAWDkyJGa3NxceUVFhaioqEi2YMGCSgBQqVQcAG+pnc4OFgoA9G2036e+rLk6VxhjEgBOAGwmmxYhhJCu1XSElTGGV1991efkyZPn/fz8jK+88kpvnU53/f6Bg4ODcKs2NRoNa62N9uCcY/fu3VnBwcH6xuU//vijXXPnwDlnc+bMKdu8eXPT6yQkEglvuCUikUhgMpmuNyASiW76A5pzjuXLl19buXLlDaP0mZmZMplMdr2+WCzmWq22xfNsqZ3b0ZYf8RSAQYyx/owxGYAnABxsUucggIX17x8F8O87MV+BEEJI93Dt2jXZsWPH7AAgLi5OPW7cuFoA8PLyMlVVVYm++eabFp9csLe3N1dXV990/dJoNKK2ttHYiBEjdAUFBbJz587JAWDnzp3qhs8mTJhQvX79ek9BsMQqJ06cUDZ89uOPPzoWFRWJa2tr2aFDh5zDwsJqIyIiquPj410KCgokAFBUVCS+cOGCrLXjh4SE1H722WdqAPjss8+uZ0qcOnVq9Y4dO9yqqqpEAJCTkyNtaLc5Li4ugpeXl2HHjh3OAKDVallNTY3odttpzi0r189BiAJwBIAYwDbO+TnG2FoAyZzzgwC+ALCDMZYFoByWgIIQQghplq+vr+6TTz7xWLx4sWrQoEG61157raSiokI8dOjQQHd3d1NwcHBdS9+dN29e+UsvveS7detWz927d2c3lLu5uZnnzZtX0pY2GlOpVPyTTz7Jmz59up9SqRTGjh1bW1tbKwaADz744OrixYv7+fv7BwiCwPr27av/4YcfsgBg+PDhdTNnzhxYWFgoe/TRR8v+8Ic/aABg1apVBeHh4YMFQYBUKuXR0dH5gwcPNrR0/C1btuQ/8cQTAzZt2uTVeIJjZGRk9blz5xSjR4/2r++nEBcXlyORSFr8Y/zLL7/MWbRokc+7777bWyqV8l27dmW31I63t7epLb8PADBrDQCMGjWKJycnW+XYhBBiqxhjpznnozrSRkpKSm5wcHC7h6Q7KjMzUzZ9+vRBFy9ePGetPnRUdHS0a3Jyst327dvzrd2XzpSSkuIWHBzs27ScFuwnhBBCSKtouWdCCCFdasiQIQZrjSpMmjRp4OXLl+WNy/785z9fmT17dvXttLN06dIy9KCJ/BQsEEJIzyMIgsCam4Hf3R09ejT71rV6JkEQGIBmnzqh2xCEENLzpJWUlDjVXxwIgSAIrKSkxAlAWnOfW22CI2OsBEBeO7/uhiarQ/YwdP49+/wB+g168vn7cM7db12tZadPn/aQSCSfAxgG+qORWAgA0kwm0/OhoaHFTT+0WrDQEYyx5I7OBrZldP49+/wB+g16+vkT0tUooiSEEEJIqyhYIIQQQkirbDVY+NTaHbAyOn/S03+Dnn7+hHQpm5yzQAghhJCuY6sjC4QQQgjpIhQsEEIIIaRVNhssMMb+whjLYIylMsb2Mcacrd2nrsAYi2CMZTLGshhjr1u7P12JMdaXMfYDY+w8Y+wcY2yZtftkDYwxMWPsV8ZYvLX70tUYY86Msd31/9tPZ4zda+0+EdIT2GywAOAogGGc8+EALgD4k5X7c8cxxsQANgOYCiAAwFzGWIB1e9WlTABe5ZwHALgHwJIedv4NlgFIt3YnrORjAAmcc38Awei5vwMhXcpmgwXO+Xec84Zc3D8D6GPN/nSRMQCyOOeXOOcGADsBPGzlPnUZzvk1zvmZ+vc1sFwovK3bq67FGOsDYBqAz63dl67GGHMC8AcAXwAA59zAOa+0bq8I6RlsNlho4lkAh63diS7gDeByo/0r6GEXywaMMV8AIwGctG5PutwmAP+LFpK9dHP9AZQA+Hv9bZjPGWN21u4UIT3BXR0sMMaOMcbSmnk93KjOm7AMT8dZr6ekKzHG7AHsAbCcc35baWVtGWNsOoBizvlpa/fFSiQAQgDEcM5HAqgD0KPm7RBiLXd1imrO+cTWPmeMPQ1gOoBw3jMWjCgA0LfRfp/6sh6DMSaFJVCI45zvtXZ/uth9AGYyxh4CoADgyBj7knM+38r96ipXAFzhnDeMJu0GBQuEdIm7emShNYyxCFiGY2dyzjXW7k8XOQVgEGOsP2NMBuAJAAet3KcuwxhjsNyvTuecb7B2f7oa5/xPnPM+nHNfWP7t/92DAgVwzgsBXGaMDakvCgdw3opdIqTHuKtHFm7hbwDkAI5ariH4mXP+onW7dGdxzk2MsSgARwCIAWzjnJ+zcre60n0AngLwG2PsbH3ZG5zzQ1bsE+la/wMgrj5YvgTgGSv3h5AegZZ7JoQQQkirbPY2BCGEEEK6BgULhBBCCGkVBQuEEEIIaRUFC4QQQghpFQULhBBCCGkVBQuEEEIIaRUFC6TbYoyZGWNn65cI38UYUzX67BHGGGeM+dfvK+rTHgc1qrOSMRbbSvsLGWMX618L7+zZEEKI9dA6C6TbYozVcs7t69/HATjdsPIjY+wrAL1hWQXxnfqyCABvwpLZsDeAJACjOOcVzbStBpAMYBQADuA0gNDm6hJCiK2jkQXSU/wHgB9wPRHV/QCeg2XZZAAA5zwBwDUACwBsBLC6lYv/FABHOefl9XWOAoi4c90nhBDroWCBdHuMMQmAqQB+qy96GEAC5/wCgDLGWGij6ssB/BmAO+d8RyvNUrpwQkiPQcEC6c6U9TkkkgHkw5KECgDmAthZ/35n/T4AgHN+FcC/AcR0YT8JIeSuZsuJpAi5FS3nfETjgvq5Bg8CCGKMcVgScnHG2MpGac6F+ldrCgCMb7TfB8Dxzug0IYTcbWhkgfQ0jwLYwTn34Zz7cs77AsgB8MBttnMEwGTGmAtjzAXA5PoyQgjpdihYID3NXAD7mpTtQaNbEW3BOS8H8C6AU/WvtfVlhBDS7dCjk4QQQghpFY0sEEIIIaRVNMGRkFbUr+jY9BFKPed8rDX6Qwgh1kC3IQghhBDSKroNQQghhJBWUbBACCGEkFZRsEAIIYSQVlGwQAghhJBW/T8hRTKmxpr+jgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f06a5725e80>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_par_dep_ICE('PAY_0', par_dep_PAY_0) # plot partial dependence and ICE for PAY_0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f06a84c3400>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "_ = train['PAY_0'].plot(kind='hist', bins=20, title='Histogram: PAY_0')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Partial dependence and ICE plot for `BILL_AMT1`\n",
    "Monotonic decreasing prediction behavior for `BILL_AMT1` is also displayed for all percentiles. This mild decrease in probability of default as most recent bill amount increases could be related to wealthier, big-spending customers taking on more debt but also being able to pay it off reliably. Also, customers with negative bills are more likely to default, potentially indicating charge-offs are being recorded as negative bills. In a mission-critical situation, this issue would require more debugging. Also predictions below \\$ NT 0 and above \\$ NT 400,000 are based on very little training data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f06a86402e8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_par_dep_ICE('BILL_AMT1', par_dep_BILL_AMT1) # plot partial dependence and ICE for BILL_AMT1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f06a858f630>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "_ = train['BILL_AMT1'].plot(kind='hist', bins=20, title='Histogram: BILL_AMT1')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 6. Generate reason codes using the Shapley method \n",
    "Now that the monotonic behavior of the GBM has been verified and compared against domain knowledge and reasonable expectations, a method called Shapley explanations will be used to calculate the local variable importance for any one prediction: http://papers.nips.cc/paper/7062-a-unified-approach-to-interpreting-model-predictions. Shapley explanations are the only possible consistent local variable importance values. (Here consistency means that if a variable is more important than another variable in a given prediction, the more important variable's Shapley value will not be smaller in magnitude than the less important variable's Shapley value.) Very crucially Shapley values also *always* sum to the actual prediction of the XGBoost model. When used in a model-specific context for decision tree models, Shapley values are likely the most accurate known local variable importance method available today. In this notebook, XGBoost itself is used to create Shapley values with the `pred_contribs` parameter to `predict()`, but the `shap` package is also available for other types of models: https://github.com/slundberg/shap. \n",
    "\n",
    "The numeric Shapley values in each column are an estimate of how much each variable contributed to each prediction. Shapley contributions can indicate how a variable and its values were weighted in any given decision by the model. These values are crucially important for machine learning interpretability and are related to \"local feature importance\", \"reason codes\", or \"turn-down codes.\" The latter phrases are borrowed from credit scoring. Credit lenders in the U.S. must provide reasons for automatically rejecting a credit application. Reason codes can be easily extracted from Shapley local variable contribution values by ranking the variables that played the largest role in any given decision."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To find the index corresponding to a particular row of interest later, the index of the `test` DataFrame is reset to begin at 0 and increase sequentially. Without resetting the index, the `test` DataFrame row indices still correspond to the original raw data from which the test set was sampled."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "test.reset_index(drop=True, inplace=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Select most risky customer in test data\n",
    "One person who might be of immediate interest is the most likely to default customer in the test data. This customer's row will be selected and local variable importance for the corresponding prediction will be analyzed."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "decile = 99\n",
    "row = test[test['ID'] == percentile_dict[decile]]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Create a Pandas DataFrame of Shapley values for riskiest customer\n",
    "The most interesting Shapley values are probably those that push this customer's probability of default higher, i.e. the highest positive Shapley values. Those values are plotted below."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "# reset test data index to find riskiest customer in shap_values \n",
    "# sort to find largest positive contributions\n",
    "s_df = pd.DataFrame(shap_values[row.index[0], :][:-1].reshape(23, 1), columns=['Reason Codes'], index=X)\n",
    "s_df.sort_values(by='Reason Codes', inplace=True, ascending=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Reason Codes</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>PAY_0</th>\n",
       "      <td>1.526435</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>PAY_5</th>\n",
       "      <td>0.511360</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>PAY_6</th>\n",
       "      <td>0.328183</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>PAY_2</th>\n",
       "      <td>0.289542</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>LIMIT_BAL</th>\n",
       "      <td>0.287896</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>PAY_4</th>\n",
       "      <td>0.227838</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>AGE</th>\n",
       "      <td>0.225641</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BILL_AMT1</th>\n",
       "      <td>0.197412</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>PAY_3</th>\n",
       "      <td>0.178575</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>MARRIAGE</th>\n",
       "      <td>0.171177</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>PAY_AMT3</th>\n",
       "      <td>0.133252</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>PAY_AMT1</th>\n",
       "      <td>0.107046</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>PAY_AMT2</th>\n",
       "      <td>0.082654</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BILL_AMT3</th>\n",
       "      <td>0.068008</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>EDUCATION</th>\n",
       "      <td>0.060491</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>PAY_AMT4</th>\n",
       "      <td>0.060251</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BILL_AMT2</th>\n",
       "      <td>0.057245</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BILL_AMT4</th>\n",
       "      <td>0.039342</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>PAY_AMT5</th>\n",
       "      <td>0.036137</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>PAY_AMT6</th>\n",
       "      <td>0.025210</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BILL_AMT6</th>\n",
       "      <td>0.005666</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BILL_AMT5</th>\n",
       "      <td>0.002853</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SEX</th>\n",
       "      <td>-0.096203</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           Reason Codes\n",
       "PAY_0          1.526435\n",
       "PAY_5          0.511360\n",
       "PAY_6          0.328183\n",
       "PAY_2          0.289542\n",
       "LIMIT_BAL      0.287896\n",
       "PAY_4          0.227838\n",
       "AGE            0.225641\n",
       "BILL_AMT1      0.197412\n",
       "PAY_3          0.178575\n",
       "MARRIAGE       0.171177\n",
       "PAY_AMT3       0.133252\n",
       "PAY_AMT1       0.107046\n",
       "PAY_AMT2       0.082654\n",
       "BILL_AMT3      0.068008\n",
       "EDUCATION      0.060491\n",
       "PAY_AMT4       0.060251\n",
       "BILL_AMT2      0.057245\n",
       "BILL_AMT4      0.039342\n",
       "PAY_AMT5       0.036137\n",
       "PAY_AMT6       0.025210\n",
       "BILL_AMT6      0.005666\n",
       "BILL_AMT5      0.002853\n",
       "SEX           -0.096203"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "s_df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Plot top local contributions as reason codes"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAE/CAYAAAC9y4P/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAHu9JREFUeJzt3Xu8XFV9/vHPQxJuctUcCyEJRAlKRP2BB9SiNXKRAJJoFSGAFQUjVqzUG6gVWvTXIli8IjQqAlYJoIipBqEWFLwgBEEkYGhMIBeJHO4IAsZ8+8dah9k5zpyZkzM5c7Lmeb9eeWXPXnv2/s6ameesfZkZRQRmZlaWTTpdgJmZtZ/D3cysQA53M7MCOdzNzArkcDczK5DD3cysQA73DpO0maQ/SJrQ6VpKJumFktZsgPUeIWlVfg53b/f6h0PSbpIebmG5EyT9cCRqspHT1eGe35D9/9ZK+mPl9tFt3tYNkp4csM09I+KpiNgqIn7X5u3NyI/pD5Iek3Rnux/ThiZpE0kfkHSHpMclrZA0T9K0TtdWcTbwjvwc3jmSG86hvCY/x49K+qWkg/rbI+KuiNhuhGuaKOlCSb/PNd0h6eOSNh/GOjeXFJImtrPW0nV1uOc35FYRsRWwHDisMu8bG2CTx1e3GRG3bIBtVC3Nj20b4CPABZKmbOBtttN5wLuAdwPbAy8ErgQO6WRR/SSNAyYAi9bz/mPaUMaP8nO8HXAhcJmkZ7VhvUMm6bnADUAAe0fENqTnagKwcydqajdJYztdQ6u6OtybkbSFpHMk3StppaSz8hu6f2S8RNK/SHpQ0jJJh6/HNp4ZlUh6jaTlklRpny3pxjw9Jo+Clkq6X9I3JDUdmUVyBfBHYI/KuveQdI2kh/LI/g2VtjdK+lUefS2X9NFK27PyCPpBSQ9L+oWk7XPbZEkLcttdkt5Wud8ZueaL897EbZL+X4N+2QM4Djg8In4cEU9HxOMRcWFEfDov82xJ35TUl/v/w/19J2mspM9JekDSEuDAAet/tqSLJK3OewSnSdokt71Q0k8kPZLXfVGd+rYFHso3F0talOe/WNL1uV9uk3Rw5T7zJH1e0tWSHgdeWWe975L0m9w/SyS9o/6zuq6IWAt8HdgaeF7lcTxzKErSOyXdnde9tN7rVckXJF0radv8/E+ttE+U9ESD192HgdXA2yNiea7r7oh4d0QsHlhPXt8Nko6p1Fuv36/L/y9W2kt5Q17+PZJ+m5/jyyX9VZ7f/546Ibc/KumfJL1A0o15/d9QJajz6/22/Lxdr8reYX6NfDA/x4+28nyMChHhf+krGO4GDhgw70zgemA88FfATcDHctsMYA3wb8CmwAHAE8CUBuu/ATimzvzNSSOdiaQ/tiuBV1fa/ws4KU+fnOuZkO93AfC1BtubASzJ05sAh+ftTMvztgHuBY4GxgB7Aw8Cu+b2/YEX5fvuldtm5Lb3Ad8CtgDG5vs+K7f9AvgMsBnQm++3b247I/fRgXmbnyGNPOvVfxKwuMlzdilwGbAVsCuwDDi6cv9f577qAX4CrKnc90rgC8CWwI7ALcDbctt3gA8Cyo9x3wbbf+a5q9xeDnwAGAccBPyh/zUBzMv98fLcr5vVWedMYEre9gGkP8gvarD9E4Af5umxebt/BLbP817Y/5hJez4PA8/PtycAu1fXk9dxEek1t3luOx/4l8o2TwYua1DPrcBHBnm+nqmn3vuiUb8P7Oc87xDSH5KX5Pa5wNUDlu9/bewJ/Am4irQH8Wzgf4Ej8vKvIL0XXkZ6Xc4B7gLG5vbVpPf+BGCLTmdVq/86XsBo+Uf9cF8F7Fe5PQv4TZ6eATzZ/ybI8+YDH2qw/huAx/Mb7GHgZ/VeuMCngS/l6WfnN+sO+fYyKkGTQ+AJQHW2NwP4c97WU6Q/RO+utL8N+O8B97kQOLlB/ecB/5an/x74MbDHgGWm5j7ZojLvM8B5efoM4HuVtr2Ahxts7xM0CP7cvll+fM+rzHsf8IM8/TPg2ErbTGpBt3N+LsZV2t8OXJmnLwW+COzY5DUz8Lk7ELin+nyQAuuUPD0PmDvE1+UPgHc1aDuBFFoP5/8fB95Qaa8X7rOqr9nKeq7PtV5MDrXc9hryICHf/jUws0E9K6p9Xqe9WbjX7feB/ZznfQM4vXJ7O2AtsENl+ZdV2hcB76vcPgc4I09/jTxoq7TfA7w8T68GjhrK8zYa/vmwTAN5934H0pPc7x5gp8rtvoh4ckD7YFe9vCsitsv//rrBMt8EDs+7jIcDP4mI1bmeScCCvOv4MGm0uQnwnAbrWhbphNq2pJHNfpW2nYG/6V9XXt+bSKNYJO0r6cd59/gR4FjSHgzAV0nh/i2lw1X/qnT8eELukz8O6JNqn62uTD9BGlnV80B/LQ3skB/78gbbmkAKm2pbv51JAdBXeeyfI+2dAfwjaUR/S95VP2aQOqomAMsjJ0KdmhhQ01+QNDMfOngw17UftX6v58f5OX4OcDWwb72FIuIh0l7aPwCrJc2XtGtlkd1JA4LTI6J66OQ6YIykV+ZDaDuS9nrqafacNTOUfp9A5TmNiIdJh0yqff37yvQf69zuf+3tDHx0wHuhhyE8b6ORw72B/AZdzbongiaTRvP9xmvdqwAmA8O66iUifkl6kxwAHEUK+/56+vcktqv82zwi7m+yzieB9wOvlDQjz15B2o2trmuriDgpt18KXAJMiohtSYeAlNf3VEScGhEvBP6G9EfoyPzYeyRtMaBPqn3Wqh8Cu0p6SYP21aSR2uQG27qX9Mew2tZvBelwyfaVx75NROyVH9+qiHgHKaj+AThfUvX+jfxuwHYG1gRpRFmX0onQy0h7Lc/NoX0Nud8HExGPkkbgJ6jB1UQR8f2I2J/8Rwg4t9J8K+nE9VWSnle5T5AO1RwDvBWYFxF/alDGD4G/HaTMx0l/KDarzNuhsq1G/V6vz35H5b2ZzwFsw/q91lYApw54L2wZEZdXltnovj7X4T64i4HTJD1H6UqAjwH/WWkfB3xc0qaS9iPtln+7Tdv9EOlYdvUFdh5whqRJkK5OkHRYKyvMAf9Z4NQ86wpgT6XrtMflx/AKpWujRRrVPBART0r6a1KAk7d7gKRpSicgHyUd8lkLLCHttn9S6fr9vUiHf6p91pKIuJ10vPdSSa/O9W0h6WhJH4iIp0iHEf5V6QTv80mHZfq3dSnwj5J2lDSedLKvf93LSIcDzpS0tdIll1MlvSo/viMkTcjB1n+d+J9bKPt6YBNJJymd0D0QeF2upRVbkF5T9wFrJc0Eprd4XyLi96RDax8f2CZpJ0mHStqSdJjuD6TnrHr/C4BPAtdIqg5qLgLeAszO042cCewo6auV1+gkpRO0LyAFch9wtNLFAX9PZXTcqN/zc/0I+URxdjHwTqWLAjYnHfK7JiKqe4atmgu8V1Kvkq3yHtSW67GuUcPhPrhTgTtIx+tuBX5KegH3u5sUbKtJQfT2iFjahu1+k7Q7fmVEPFKZfyZpdHSNpMdIx5X3GsJ65wLTJB2Yd9MPIh1rvpf0xvsk6Th0kEaBn87b+TBpRNlvJ+C7wGPA7cAC4JJ8v8OBaaQ+uYR0DuInQ3nwFe8CvpLrfoh0EuxQ4PuVdki759fkZfsvYf0iKWwXkU7yDgzY2aTjtL8hneS8hNphmVcCN0v6Q37ccyKi6Ygw/wF9PfBm0t7X2aSTdi29JvIe2AdJJzQfAN5A6tuhOBt4Uw7TqjHAKaTn5QHSwOHEOjXMBf6d9BqbmOf9FlgMPBYRNw5S/32kvhtH6r/HSCcxVwP3RMSfgeOB04D7SXtWN1dWMVi/n0q6zPNhSTMj4nukixnmk167O5D2LIYsIn5K2lP4D9IflbtIe80b3Wi9SuseHrRW5cMbX4yIXZsubLaRk/RN4I6I+GSna7HWeORuZoPKJ15fT7qqxDYSDncza0jSmaSrsk5v5dCUjR4+LGNmViCP3M3MCuRwNzMrkMPdzKxADnczswI53M3MCuRwNzMrkMPdzKxADnczswI53M3MCuRwNzMrkMPdzKxADnczswI53M3MCuRwNzMrUNNwl3S+pPsk3T7IMtMl3SppkaQft7dEMzMbqqbf5y7pb0g/pntRROxRp3070m95zoiI5ZKem39L0czMOmRsswUi4jpJuwyyyFHA5RGxPC/fUrCPHz8+dtllsNWamdlAN9988/0R0dNsuabh3oLdgHGSfgRsDXwuIi6qt6CkOcAcgMmTJ7Nw4cI2bN7MrHtIuqeV5dpxQnUs8DLgUOAg4OOSdqu3YETMjYjeiOjt6Wn6h8fMzNZTO0buK4EHIuJx4HFJ1wEvBe5qw7rNzGw9tGPk/l3gVZLGStoSeDlwZxvWa2Zm66npyF3SxcB0YLyklcBpwDiAiDgvIu6U9APgNmAt8JWIaHjZpJmZbXitXC0zu4VlzgLOaktFZmY2bP6EqplZgRzuZmYFcribmRXI4W5mVqB2XOfeMbuc8v1Ol8DdZxza6RLMzP6CR+5mZgVyuJuZFcjhbmZWIIe7mVmBHO5mZgVyuJuZFcjhbmZWIIe7mVmBHO5mZgVyuJuZFcjhbmZWIIe7mVmBHO5mZgVqGu6Szpd0n6RBfxdV0t6S1kh6c/vKMzOz9dHKyP0CYMZgC0gaA3wKuLoNNZmZ2TA1DfeIuA54sMli7wW+DdzXjqLMzGx4hn3MXdJOwBuBc1tYdo6khZIW9vX1DXfTZmbWQDtOqH4WODki1jZbMCLmRkRvRPT29PS0YdNmZlZPO35mrxeYJwlgPHCIpDURcUUb1m1mZuth2OEeEVP6pyVdAHzPwW5m1llNw13SxcB0YLyklcBpwDiAiDhvg1ZnZmbrpWm4R8TsVlcWEccOqxozM2sLf0LVzKxADnczswI53M3MCuRwNzMrkMPdzKxADnczswI53M3MCuRwNzMrkMPdzKxADnczswI53M3MCuRwNzMrkMPdzKxADnczswI53M3MCuRwNzMrkMPdzKxADnczswI1DXdJ50u6T9LtDdqPlnSbpF9L+pmkl7a/TDMzG4pWRu4XADMGaV8GvCYiXgx8ApjbhrrMzGwYWvmB7Osk7TJI+88qN28AJg6/LDMzG452H3M/DriyUaOkOZIWSlrY19fX5k2bmVm/toW7pNeSwv3kRstExNyI6I2I3p6ennZt2szMBmh6WKYVkl4CfAU4OCIeaMc6zcxs/Q175C5pMnA58NaIuGv4JZmZ2XA1HblLuhiYDoyXtBI4DRgHEBHnAacCzwG+JAlgTUT0bqiCzcysuVaulpndpP144Pi2VWRmZsPmT6iamRXI4W5mViCHu5lZgRzuZmYFcribmRXI4W5mViCHu5lZgRzuZmYFcribmRXI4W5mViCHu5lZgRzuZmYFcribmRXI4W5mViCHu5lZgRzuZmYFcribmRXI4W5mVqCm4S7pfEn3Sbq9QbskfV7SEkm3Sdqr/WWamdlQtDJyvwCYMUj7wcDU/G8OcO7wyzIzs+FoGu4RcR3w4CCLzAIuiuQGYDtJO7arQDMzG7p2HHPfCVhRub0yz/sLkuZIWihpYV9fXxs2bWZm9YzoCdWImBsRvRHR29PTM5KbNjPrKu0I91XApMrtiXmemZl1SDvCfT7wd/mqmVcAj0TEvW1Yr5mZraexzRaQdDEwHRgvaSVwGjAOICLOAxYAhwBLgCeAt2+oYs3MrDVNwz0iZjdpD+A9bavIzMyGzZ9QNTMrkMPdzKxADnczswI53M3MCuRwNzMrkMPdzKxADnczswI53M3MCuRwNzMrkMPdzKxADnczswI53M3MCuRwNzMrkMPdzKxADnczswI53M3MCuRwNzMrkMPdzKxALYW7pBmSFktaIumUOu2TJV0r6RZJt0k6pP2lmplZq5qGu6QxwDnAwcA0YLakaQMW+yfg0ojYEzgS+FK7CzUzs9a1MnLfB1gSEUsj4mlgHjBrwDIBbJOntwV+174SzcxsqFoJ952AFZXbK/O8qn8GjpG0ElgAvLfeiiTNkbRQ0sK+vr71KNfMzFrRrhOqs4ELImIicAjwdUl/se6ImBsRvRHR29PT06ZNm5nZQK2E+ypgUuX2xDyv6jjgUoCI+DmwOTC+HQWamdnQtRLuNwFTJU2RtCnphOn8AcssB/YHkLQ7Kdx93MXMrEOahntErAFOBK4C7iRdFbNI0umSZubFPgC8U9KvgIuBYyMiNlTRZmY2uLGtLBQRC0gnSqvzTq1M3wHs297SzMxsffkTqmZmBXK4m5kVyOFuZlYgh7uZWYEc7mZmBXK4m5kVyOFuZlYgh7uZWYEc7mZmBXK4m5kVyOFuZlYgh7uZWYEc7mZmBXK4m5kVyOFuZlYgh7uZWYEc7mZmBXK4m5kVqKVwlzRD0mJJSySd0mCZt0i6Q9IiSd9sb5lmZjYUTX9DVdIY4BzgQGAlcJOk+fl3U/uXmQp8BNg3Ih6S9NwNVbCZmTXXysh9H2BJRCyNiKeBecCsAcu8EzgnIh4CiIj72lummZkNRSvhvhOwonJ7ZZ5XtRuwm6SfSrpB0ox6K5I0R9JCSQv7+vrWr2IzM2uqXSdUxwJTgenAbODLkrYbuFBEzI2I3ojo7enpadOmzcxsoFbCfRUwqXJ7Yp5XtRKYHxF/iohlwF2ksDczsw5oJdxvAqZKmiJpU+BIYP6AZa4gjdqRNJ50mGZpG+s0M7MhaBruEbEGOBG4CrgTuDQiFkk6XdLMvNhVwAOS7gCuBT4UEQ9sqKLNzGxwTS+FBIiIBcCCAfNOrUwH8P78z8zMOsyfUDUzK5DD3cysQA53M7MCOdzNzArkcDczK5DD3cysQC1dCmmj3y6nfL/TJXD3GYd2ugQzyzxyNzMrkMPdzKxADnczswI53M3MCuRwNzMrkMPdzKxADnczswI53M3MCuRwNzMrkMPdzKxADnczswK1FO6SZkhaLGmJpFMGWe5NkkJSb/tKNDOzoWoa7pLGAOcABwPTgNmSptVZbmvgfcAv2l2kmZkNTSsj932AJRGxNCKeBuYBs+os9wngU8CTbazPzMzWQyvhvhOwonJ7ZZ73DEl7AZMiYtDvnZU0R9JCSQv7+vqGXKyZmbVm2CdUJW0CnA18oNmyETE3Inojorenp2e4mzYzswZaCfdVwKTK7Yl5Xr+tgT2AH0m6G3gFMN8nVc3MOqeVcL8JmCppiqRNgSOB+f2NEfFIRIyPiF0iYhfgBmBmRCzcIBWbmVlTTcM9ItYAJwJXAXcCl0bEIkmnS5q5oQs0M7Oha+k3VCNiAbBgwLxTGyw7ffhlmZnZcPgTqmZmBXK4m5kVyOFuZlYgh7uZWYFaOqFqtjHZ5ZRBPyg9Iu4+49BOl2BdziN3M7MCOdzNzArkcDczK5DD3cysQD6halYwn1zuXg53M+sK3faHzodlzMwK5HA3MyuQw93MrEAOdzOzAjnczcwK5HA3MyuQw93MrEAOdzOzArUU7pJmSFosaYmkU+q0v1/SHZJuk/Q/knZuf6lmZtaqpuEuaQxwDnAwMA2YLWnagMVuAXoj4iXAt4Az212omZm1rpWR+z7AkohYGhFPA/OAWdUFIuLaiHgi37wBmNjeMs3MbChaCfedgBWV2yvzvEaOA66s1yBpjqSFkhb29fW1XqWZmQ1JW0+oSjoG6AXOqtceEXMjojcient6etq5aTMzq2jlWyFXAZMqtyfmeeuQdADwMeA1EfFUe8ozM7P10crI/SZgqqQpkjYFjgTmVxeQtCfwH8DMiLiv/WWamdlQNA33iFgDnAhcBdwJXBoRiySdLmlmXuwsYCvgMkm3SprfYHVmZjYCWvqxjohYACwYMO/UyvQBba7LzMyGwZ9QNTMrkMPdzKxADnczswI53M3MCuRwNzMrkMPdzKxADnczswI53M3MCuRwNzMrkMPdzKxADnczswI53M3MCuRwNzMrkMPdzKxADnczswI53M3MCuRwNzMrkMPdzKxALYW7pBmSFktaIumUOu2bSbokt/9C0i7tLtTMzFrXNNwljQHOAQ4GpgGzJU0bsNhxwEMRsSvwGeBT7S7UzMxa18rIfR9gSUQsjYingXnArAHLzAIuzNPfAvaXpPaVaWZmQ6GIGHwB6c3AjIg4Pt9+K/DyiDixsszteZmV+fZv8zL3D1jXHGBOvvkCYHG7HsgwjAfub7pUd3Bf1LgvatwXNaOhL3aOiJ5mC40diUr6RcRcYO5IbrMZSQsjorfTdYwG7osa90WN+6JmY+qLVg7LrAImVW5PzPPqLiNpLLAt8EA7CjQzs6FrJdxvAqZKmiJpU+BIYP6AZeYDb8vTbwauiWbHe8zMbINpelgmItZIOhG4ChgDnB8RiySdDiyMiPnAV4GvS1oCPEj6A7CxGFWHiTrMfVHjvqhxX9RsNH3R9ISqmZltfPwJVTOzAjnczcwK5HA3MyuQw93MbIgkTeh0Dc103QlVSdsCM4Cd8qxVwFUR8XDnquo8SVOAPYE7IuI3na5nJEmaDNwXEU/mr804FtgLuAP4ckSs6WR9I03SNkBPRPx2wPyXRMRtHSprVJG0PCImd7qOwXTVyF3S3wG/BKYDW+Z/rwVuzm1dQ9IVlelZwDXAYcB3JR3bqbo6ZAG198IZwKHAL4C92YgufWsHSW8BfgN8W9IiSXtXmi/oTFWj0qj/7qwR/fqBUeBjwMsGjtIlbU96M1/Ukao6Y+fK9MnAfhGxTNJ44H/orjfyJhHxRJ4+ANg7ItYC/ynpVx2sqxM+SnqP3CtpH9LnVz4SEd9hIwi0ETTqD3l0W7iL+k/KWrrvhVvth7ERsQwgIu6XtLZDNXXKCkn7RcQ1wN2kr9K4R9JzOltWR4yJiHsBIuJGSa8FvidpEhtBoLWTpC9Q/zEL2G6Eyxmybgv3/w/8UtLVwIo8bzJwIPCJjlXVGS+V9CjphbqZpB3zaG1T0ieRu8nxwEWS/hl4BLhV0q2kN/D7O1lYBzwm6fn9x9vza2I6cAXwoo5WNvIWrmfbqNCNJ1S3Bw7iL0+oPtS5qkYPSdsBu0fEzztdy0iTtDuwG2nQsxK4KR+e6RqSXgo8HhFLBswfB7wlIr7RmcpGD0mbA4dFxGWdrmUwXRfurZD084h4ZafrGA3cFzXui5pu64v8i3QHAbOB1wHXR8SbO1vV4LrtsEyrNu90AaOI+6LGfVHTFX0h6TXAUcAhwI3AvsCUygn4UcvhXp93Z2rcFzXui5ri+0LSSmA5cC7wwYh4TNKyjSHYocuuczczG4JvAROAI4DDJD2LjeiPmsO9vm67LHIw7osa90VN8X0REScBU4B/J33wcTHQI+ktkrbqZG2t6Kpwl3Ru/mh1M2/d4MV0mPuixn1R475YVyTXRsQcUtAfBcwifR5iVOuqcAeWkr5q4KjBFoqI20eonk5yX9S4L2rcFw1ExJ8i4r8i4mjW/V3pUanrLoWUtBNwNjCedKLkmeuYI+LyTtXVCe6LGvdFjfsikTSV9JUlD5L648vAq4HfAsdFxKj+IFPXXS0TEaskfZ/0adXDqL1wA+iaFy64L6rcFzXui2d8jfR9U9uQvnvqJOCNpIA/B3h550prrqvCXdKLSCOR3wH79H+HRjdyX9S4L2rcF+vYKiLmAkg6ofKJ1P+WdFYH62pJV4U76dKm90XE1Z0uZBRwX9S4L2rcFzXVr554dJC2UamrjrlL2iwinqoz/1XA7Ih4TwfK6gj3RY37osZ9USPpCWAJ6bLP5+dp8u3nRcSzOlVbK7pq5F590Urak3RZ0+HAMrrrWKL7osJ9UeO+WMfunS5gOLoq3CXtRvrin9nA/cAlpL2X13a0sA5wX9S4L2rcFzURcU8ry43WL1HrtsMya4HrSZcxLcnzlkbE8zpb2chzX9S4L2rcF0Mn6ZaI2LPTdQzUbR9i+lvgXuBaSV+WtD9d8DHqBtwXNe6LGvfF0I3KEXJXjdz75S8AmkXa9dyPdC3rd7rxCgH3RY37osZ90TpJv4yIvTpdx0BdGe5V+ZeZDgeOiIj9O11PJ7kvatwXNe6LwY3WwzJdFe7557FOAHYFfg18NSLWdLaqznBf1LgvatwXNZKujojXtbDcHqPxu3a67Zj7hUAv6UV7MOmrPLuV+6LGfVHjvqjpaWWh0Rjs0H0j919HxIvz9FjgxtF4rGwkuC9q3Bc17osaSUuBDzZqH+1fotZV17kDf+qfiIg1UldfBOC+qHFf1LgvarYFXk/9q4VG/ZeoddvI/c/A4/03gS2AJ/J0REQrP1JQBPdFjfuixn1RM1qvgmlVV43cI2JMp2sYLdwXNe6LGvfFOjbq3ZZuO6FqZtaqYzpdwHB01WEZM7NWSXqM+p8+3SgOUTnczcwK1FXH3M3MWiXp2YO1R8SDI1XL+vDI3cysjvwNmSuB/k/oVk+wxmj/pkyP3M3M6vs88Frgp8DFwE9iIxoNe+RuZtaA0qe4ppO+HXMf4Grg3IhY1sm6WuFLIc3MGojkWuDDwHnA24EDOltVa3xYxsysjsp32h9B+hKxy4GXRcTyjhbWIh+WMTOrQ9LjwP8C8/L/64TlaP/iMIe7mVkdki6g8U/oRUS8YwTLGTKHu5lZgXzM3cysDknvH6w9Is4eqVrWh8PdzKy+rQdpG/WHPHxYxsxsiCSdFBGf7XQdg3G4m5kNkaTlETG503UMxh9iMjMbulH/Qx4OdzOzoRv1hzx8QtXMrI4mP9axxQiXM2Q+5m5mViAfljEzK5DD3cysQA53M7MCOdzNzAr0f8M0TzBGjZ2DAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f06a5739ba8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "_ = s_df[:5].plot(kind='bar', \n",
    "                  title='Top Five Reason Codes for a Risky Customer\\n', \n",
    "                  legend=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "For the customer in the test dataset that the GBM predicts as most likely to default, the most important input variables in the prediction are, in descending order, `PAY_0`, `PAY_5`, `PAY_6`, `PAY_2`, and `LIMIT_BAL`."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Display customer in question "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The local contributions for this customer appear reasonable, especially when considering her payment information. Her most recent payment was 3 months late and her payment for 6 months and 5 months previous were 7 months late. Also her credit limit was extremely low, so it's logical that these factors would weigh heavily into the model's prediction for default for this customer."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>ID</th>\n",
       "      <th>LIMIT_BAL</th>\n",
       "      <th>SEX</th>\n",
       "      <th>EDUCATION</th>\n",
       "      <th>MARRIAGE</th>\n",
       "      <th>AGE</th>\n",
       "      <th>PAY_0</th>\n",
       "      <th>PAY_2</th>\n",
       "      <th>PAY_3</th>\n",
       "      <th>PAY_4</th>\n",
       "      <th>PAY_5</th>\n",
       "      <th>PAY_6</th>\n",
       "      <th>BILL_AMT1</th>\n",
       "      <th>BILL_AMT2</th>\n",
       "      <th>BILL_AMT3</th>\n",
       "      <th>BILL_AMT4</th>\n",
       "      <th>BILL_AMT5</th>\n",
       "      <th>BILL_AMT6</th>\n",
       "      <th>PAY_AMT1</th>\n",
       "      <th>PAY_AMT2</th>\n",
       "      <th>PAY_AMT3</th>\n",
       "      <th>PAY_AMT4</th>\n",
       "      <th>PAY_AMT5</th>\n",
       "      <th>PAY_AMT6</th>\n",
       "      <th>DEFAULT_NEXT_MONTH</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>5399</th>\n",
       "      <td>17757</td>\n",
       "      <td>10000</td>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>51</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>7</td>\n",
       "      <td>7</td>\n",
       "      <td>7</td>\n",
       "      <td>2400</td>\n",
       "      <td>2400</td>\n",
       "      <td>2400</td>\n",
       "      <td>2400</td>\n",
       "      <td>2400</td>\n",
       "      <td>2400</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         ID  LIMIT_BAL  SEX  EDUCATION  MARRIAGE  AGE  PAY_0  PAY_2  PAY_3  \\\n",
       "5399  17757      10000    2          3         1   51      3      2      2   \n",
       "\n",
       "      PAY_4  PAY_5  PAY_6  BILL_AMT1  BILL_AMT2  BILL_AMT3  BILL_AMT4  \\\n",
       "5399      7      7      7       2400       2400       2400       2400   \n",
       "\n",
       "      BILL_AMT5  BILL_AMT6  PAY_AMT1  PAY_AMT2  PAY_AMT3  PAY_AMT4  PAY_AMT5  \\\n",
       "5399       2400       2400         0         0         0         0         0   \n",
       "\n",
       "      PAY_AMT6  DEFAULT_NEXT_MONTH  \n",
       "5399         0                   1  "
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "row # helps understand reason codes"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To generate reason codes for the model's decision, the locally important variable and its value are used together. If this customer was denied future credit based on this model and data, the top five Shapley-based reason codes for the automated decision would be:\n",
    "\n",
    "1. Most recent payment is 3 months delayed.\n",
    "2. 5th most recent payment is 7 months delayed.\n",
    "3. 6th most recent payment is 7 months delayed.\n",
    "4. 2nd most recent payment is 2 months delayed.\n",
    "5. Credit limit is too low: 10,000 $NT.\n",
    "\n",
    "(Of course, credit limits are set by the lender and are used to price-in risk to credit decisions, so using credit limits as reason codes or even in a probability of default model is likely questionable. However, in this small, example data set all input columns were used to generate a better model fit. For a slightly more careful treatment of gradient boosting in the context of credit scoring, please see: https://github.com/jphall663/interpretable_machine_learning_with_python/blob/master/dia.ipynb)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Summary\n",
    "\n",
    "In this notebook, a highly transparent, nonlinear, monotonic GBM classifier was trained to predict credit card defaults and the monotonic behavior of the classifier was analyzed and validated. To do so, Pearson correlation between each input and the target was used to determine the direction for monotonicity constraints for each input variable in the XGBoost classifier. GBM variable importance, partial dependence, and ICE were calculated, plotted, and compared to one another, domain knowledge, and reasonable expectations. Shapley values were then used to explain the model predictions for the single most risky customer in the test set. These techniques should generalize well for many types of business and research problems, enabling you to train a monotonic GBM model and analyze, validate, and explain it to your colleagues, bosses, and potentially, external regulators. "
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
